Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将属性添加到动态对象.NET_C#_.net_Dynamic - Fatal编程技术网

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链接:的可能重复