Estoy buscando una forma de agregar miembros dinámicamente a un objeto dinámico. OK, supongo que se necesita una pequeña aclaración ...Agregar dinámicamente miembros a un objeto dinámico
Cuando se hace esto:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
La propiedad Bar
se añadirá dinámicamente en tiempo de ejecución. Pero el código aún se refiere "estáticamente" a Bar (el nombre "Bar" está codificado) ... ¿Qué sucede si quiero agregar una propiedad en tiempo de ejecución sin saber su nombre en el momento de la compilación?
sé cómo hacer esto con un objeto dinámico personalizado (que en realidad hace unos meses blogged about it), utilizando los métodos de la clase DynamicObject
, pero ¿cómo puedo hacer con cualquier objeto dinámico?
Probablemente podría utilizar la interfaz IDynamicMetaObjectProvider
, pero no entiendo cómo usarla. Por ejemplo, ¿qué argumento debería pasar al método GetMetaObject
? (espera un Expression
)
Y, por cierto, ¿cómo se realiza la reflexión sobre los objetos dinámicos? La reflexión "Regular" y TypeDescriptor
no muestran los miembros dinámicos ...
¡Cualquier observación se agradecerá!
En C# 6.0, * puede ser * usted puede escribirlo como 'foo. $ Bar = 42;' :) No estoy seguro si está permitido para dinámico ... – nawfal
@nawfal, en realidad, esa característica se ha caído .. .pero de todos modos, 'foo. $ Bar' es solo la abreviatura de' foo ["Bar"] ' –
Thomas, no sabía acerca de la función que se descarta (me alegra), pero oh sí, por un momento Pasé por alto el requisito real de tu q. – nawfal