La classe ExpandoObject aggiunta a .NET 4 consente di impostare arbitrariamente le proprietà su un oggetto in fase di esecuzione.Quali sono i veri vantaggi di ExpandoObject?
Ci sono dei vantaggi rispetto all'utilizzo di uno Dictionary<string,object>
o addirittura di uno Hashtable? Per quanto posso dire, questo non è altro che una tabella hash alla quale è possibile accedere con una sintassi leggermente più sintetica.
Ad esempio, perché questo:
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Console.WriteLine(obj.MyString);
davvero meglio, o sostanzialmente differente, rispetto:
var obj = new Dictionary<string, object>();
obj["MyInt"] = 3;
obj["MyString"] = "Foo";
Console.WriteLine(obj["MyString"]);
Nei reali vantaggi possono essere ottenuti utilizzando ExpandoObject invece di utilizzare un arbitrario tipo di dizionario, oltre a non essere ovvio che stai usando un tipo che verrà determinato in fase di runtime.
Interessante. Grazie per le informazioni su: eventi. Quello era nuovo per me. –
@ Reed Sì, gli eventi non sono ancora documentati per ExpandoObject. Questo particolare esempio è venuto in realtà nella discussione sul blog. Probabilmente lo aggiungerò alla documentazione più tardi. –
@AlexandraRusina, come fa a sapere che si tratta di un evento quando si dice 'd.MyEvent = null;', o no? – Shimmy