Me gustaría agregar dinámicamente propiedades a un ExpandoObject en tiempo de ejecución. Entonces, por ejemplo, para agregar una propiedad de cadena, llame a NewProp. Me gustaría escribir algo como
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
¿Es esto fácilmente posible?
c#
c#-4.0
dynamic
expandoobject
Craig
fuente
fuente
Respuestas:
Alternativamente:
fuente
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>
, noIDictionary<string, string>
.IDictionary
, no se usadynamic
como tipo de variable.Como explicó aquí Filip: http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
También puede agregar un método en tiempo de ejecución.
fuente
Aquí hay una clase auxiliar de muestra que convierte un Objeto y devuelve un Expando con todas las propiedades públicas del objeto dado.
Uso:
fuente
Creo que esto agrega una nueva propiedad en el tipo deseado sin tener que establecer un valor primitivo, como cuando la propiedad se define en la definición de clase
fuente