Примечание: всегда есть анонимные типы, если вы знаете имена свойств статически и не хотите добавлять их после инициализации.

етил, что новыйExpandoObject инвентарьIDictionary<string,object> который имеет необходимыеIEnumerable<KeyValuePair<string, object>> а такжеAdd(string, object) методы, и поэтому должна быть возможность использовать синтаксис инициализатора коллекции для добавления свойств к объекту expando так же, как вы добавляете элементы в словарь.

Dictionary<string,object> dict = new Dictionary<string,object>() 
{
    { "Hello", "World" }
};

dynamic obj = new ExpandoObject()
{
    { "foo", "hello" },
    { "bar", 42 },
    { "baz", new object() }
};

int value = obj.bar;

Но, кажется, нет способа сделать это. Ошибка:

«System.Dynamic.ExpandoObject» не содержит определения «Добавить»

Я предполагаю, что это не работает, потому что интерфейс реализован явно. но есть ли способ обойти это? Это отлично работает,

IDictionary<string, object> exdict = new ExpandoObject() as IDictionary<string, object>();
exdict.Add("foo", "hello");
exdict.Add("bar", 42);
exdict.Add("baz", new object());

но синтаксис инициализатора коллекции намного аккуратнее.

Ответы на вопрос(6)

Ваш ответ на вопрос