C# 将属性添加到动态对象.NET
我可能想要的太多了,但我的情况是C# 将属性添加到动态对象.NET,c#,.net,dynamic,C#,.net,Dynamic,我可能想要的太多了,但我的情况是 public dynamic CreateConfigObject(JobConfigurationModel config) { dynamic configObject = new { }; configObject.Git = new GitCheckout { Repository = config.Github.Url }; return configObject; } 当然,它在configObj
public dynamic CreateConfigObject(JobConfigurationModel config) {
dynamic configObject = new { };
configObject.Git = new GitCheckout {
Repository = config.Github.Url
};
return configObject;
}
当然,它在configObject.Git
上失败,因为该属性不存在。我希望能够在运行时添加任意数量的属性,而不需要预先知道属性的数量和名称
这种情况在C语言中可能发生吗?或者我糟糕的JavaScript想象力开始伤害我了
dynamic
允许对强类型对象进行松散类型的访问
您应该使用ExpandoObject
类,该类允许对内部字典进行松散类型的访问:
dynamic configObject = new ExpandoObject();
configObject.Git = new GitCheckout {
Repository = config.Github.Url
};
ExpandoObject,现在是我最喜欢的.NET对象:)不要过度使用
ExpandoObject
。除非您真的需要,否则不要放弃编译时类型安全。实际上找到了指向此主题的Skeet链接:的可能重复