Gostaria de adicionar dinamicamente propriedades a um ExpandoObject em tempo de execução. Por exemplo, para adicionar uma propriedade de string, chame NewProp, gostaria de escrever algo como
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
Isso é facilmente possível?
c#
c#-4.0
dynamic
expandoobject
Craig
fonte
fonte
Respostas:
Alternativamente:
fonte
Error 53 Cannot convert type 'System.Dynamic.ExpandoObject' to 'System.Collections.Generic.IDictionary<string,string>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
IDictionary<string, object>
, nãoIDictionary<string, string>
.IDictionary
não usadynamic
como tipo de variável.Conforme explicado aqui por Filip - http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
Você também pode adicionar um método em tempo de execução.
fonte
Aqui está uma classe auxiliar de amostra que converte um Objeto e retorna um Expando com todas as propriedades públicas do objeto especificado.
Uso:
fonte
Eu acho que isso adicionar nova propriedade no tipo desejado sem ter que definir um valor primitivo, como quando a propriedade definida na definição de classe
fonte