ExpandoObject
se relaciona con el DLR, y está relacionado principalmente para jugar entre C# y un lenguaje dinámico (quizás IronPython); sin embargo, de manera más general, este tipo de objeto de bolsa de propiedades puede ser útil cuando el esquema de sus tipos solo se conoce en tiempo de ejecución, tal vez en función de datos de datos/datos de configuración. Tal vez un ejemplo del patrón de "plataforma interna", pero es útil en los escenarios específicos para adjuntar propiedades en tiempo de ejecución. Por supuesto, para un uso puramente CLR (es decir, no hay personas que llaman DLR) que puede hacer esto mucho más simplemente con un indexador y el diccionario:
obj["Name"] = "Fred";
string name = (string) obj["Name"];
Para los propósitos de enlace de datos, incluso con este se puede lograr el enlace de datos completos utilizando descripciones de propiedad personalizadas, a través de ICustomTypeDescriptor
o TypeDescriptionProvider
.
O para un sencillo ejemplo: considere DataTable
... esto es en parte lo que puede hacer aquí (de nuevo, en el código tecleado-estática): (ejemplo no probado)
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
DataRow row = table.Rows.Add("Fred");
posible duplicado de [ ¿Cuáles son los verdaderos beneficios de ExpandoObject?] (Http://stackoverflow.com/questions/1653046/what-are-the-true-benefits-of-expandoobject) – nawfal