将属性添加到动态对象.NET

时间:2011-07-14 19:37:26

标签: c# .net dynamic

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

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

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

    return configObject;
}

当然,它在configObject.Git上失败,因为此属性不存在。我希望能够在运行时添加任意数量的属性,没有任何事先知道的数量和属性名称;

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

1 个答案:

答案 0 :(得分:35)

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

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

dynamic configObject = new ExpandoObject();

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