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

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
};

09-11 10:01