Como posso usar a sintaxe do inicializador de coleção com o ExpandoObject?
Eu notei que o novoExpandoObject
implementaIDictionary<string,object>
que tem o requisitoIEnumerable<KeyValuePair<string, object>>
eAdd(string, object)
métodos e, portanto, deve ser possível usar a sintaxe do inicializador de coleção para adicionar propriedades ao objeto expando da mesma maneira que você adiciona itens a um dicionári
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;
Mas não parece haver uma maneira de fazer isso. Erro
'System.Dynamic.ExpandoObject' não contém uma definição para 'Adicionar'
Presumo que isso não funcione porque a interface é implementada explicitamente. mas existe alguma maneira de contornar isso? Isso funciona bem,
IDictionary<string, object> exdict = new ExpandoObject() as IDictionary<string, object>();
exdict.Add("foo", "hello");
exdict.Add("bar", 42);
exdict.Add("baz", new object());
mas a sintaxe do inicializador de coleção é muito mais clar