La clase ExpandoObject que se agrega a .NET 4 le permite establecer arbitrariamente propiedades en un objeto en tiempo de ejecución.¿Cuáles son los verdaderos beneficios de ExpandoObject?
¿Hay alguna ventaja en esto con el uso de Dictionary<string,object>
, o realmente incluso en Hashtable? Por lo que puedo decir, esto no es más que una tabla hash a la que se puede acceder con una sintaxis un poco más sucinta.
Por ejemplo, ¿por qué es esto:
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Console.WriteLine(obj.MyString);
realmente mejor, o sustancialmente diferente, que:
var obj = new Dictionary<string, object>();
obj["MyInt"] = 3;
obj["MyString"] = "Foo";
Console.WriteLine(obj["MyString"]);
Lo reales ventajas se obtienen mediante el uso de ExpandoObject en lugar de usar un arbitraria tipo de diccionario, además de no ser obvio que está utilizando un tipo que se determinará en tiempo de ejecución.
Interesante. Gracias por la información re: eventos. Esa fue una nueva para mí. –
@ Reed Sí, los eventos aún no están documentados para ExpandoObject. Este ejemplo en particular surgió en la discusión en el blog. Probablemente lo agregue a la documentación más tarde. –
@AlexandraRusina, ¿cómo sabe que es un evento cuando dices 'd.MyEvent = null;', ¿O no? – Shimmy