Добавить свойство в динамический объект .NET.

Я, вероятно, хочу слишком много, но мой сценарий

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

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

    return configObject;
}

Конечно, он терпит неудачу на configObject.Git, так как это свойство не существует. Я хочу иметь возможность добавлять любое количество свойств во время выполнения, без предварительного знания количества и имен свойств;

Является ли такой случай возможным в С# вообще, или мое плохое воображение в JavaScript начинает меня болеть?:)

Ответы

Ответ 1

dynamic позволяет свободно вводить доступ к сильно типизированным объектам.

Вы должны использовать класс ExpandoObject, который позволяет свободно вводить доступ ко внутреннему словарю:

dynamic configObject = new ExpandoObject();

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