Existe, por ejemplo, la propiedad ViewBag de la ControllerBase
clase y podemos obtener / establecer dinámicamente valores y agregar cualquier número de campos o propiedades adicionales a este objeto, lo cual es genial. Quiero usar algo así, más allá de la aplicación MVC y la Controller
clase en otro tipos de aplicaciones. Cuando intenté crear un objeto dinámico y establecer su propiedad como a continuación:
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
Tengo el RuntimeBinderException
mensaje Propiedad o indexador '<> f__AnonymousType0.A' no se puede asignar, se lee solo en la línea 2. También sugiero que no es exactamente lo que estoy buscando. Tal vez hay alguna clase que me permita hacer algo como:
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
con propiedades dinámicas de adición y configuración.
Recientemente tuve la necesidad de llevar esto un paso más allá, que era hacer que las adiciones de propiedades en el objeto dinámico, dinámicas mismas, se basaran en entradas definidas por el usuario. Los ejemplos aquí, y de la documentación de ExpandoObject de Microsoft , no abordan específicamente la adición dinámica de propiedades, pero pueden deducirse de cómo enumera y elimina propiedades. De todos modos, pensé que esto podría ser útil para alguien. Aquí hay una versión extremadamente simplificada de cómo agregar propiedades verdaderamente dinámicas a un ExpandoObject (ignorando las palabras clave y otros manejos):
fuente
ExpandoObject
es lo que buscasfuente
Puede usar
ExpandoObject Class
cuál está en elSystem.Dynamic
espacio de nombres.Se puede encontrar más información en ExpandoObject MSDN
fuente
fuente
fuente
O el valor está presente
fuente