【问题标题】:Add property to dynamic object .NET将属性添加到动态对象 .NET
【发布时间】:2011-10-05 15:39:00
【问题描述】:

我可能想要太多,但我的情况是

public dynamic CreateConfigObject(JobConfigurationModel config) {
    dynamic configObject = new { };

    configObject.Git = new GitCheckout {
        Repository = config.Github.Url
    };

    return configObject;
}

当然,它在configObject.Git 上失败,因为该属性不存在。我希望能够在运行时添加任意数量的属性,而无需事先了解属性的数量和名称;

这种情况在 C# 中是否可能发生,或者我的 JavaScript 想象力开始伤害我? :)

【问题讨论】:

标签: c# .net dynamic


【解决方案1】:

dynamic 允许对强类型对象进行松散类型的访问。

您应该使用ExpandoObject 类,它允许对内部字典进行松散类型的访问:

dynamic configObject = new ExpandoObject();

configObject.Git = new GitCheckout {
    Repository = config.Github.Url
};

【讨论】:

  • ExpandoObject,现在我最喜欢的 .NET 对象 :)
  • 不要过度使用ExpandoObject。除非你真的需要,否则不要放弃编译时类型安全。
  • 居然找到了这个话题的Skeet-Link:stackoverflow.com/questions/1394117/…
猜你喜欢
  • 2012-01-12
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多