Добавить свойство в динамический объект .NET - PullRequest
16 голосов
/ 14 июля 2011

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

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

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

    return configObject;
}

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

Возможен ли такой случай вообще в C # или мое плохое воображение JavaScript начинает болетьмне?:)

1 Ответ

35 голосов
/ 14 июля 2011

dynamic разрешает свободный типизированный доступ к объектам со строгой типизацией.

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

dynamic configObject = new ExpandoObject();

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