La classe ExpandoObject en cours d'ajout à .NET 4 vous permet de définir arbitrairement des propriétés sur un objet lors de l'exécution.Quels sont les véritables avantages d'ExpandoObject?
Y at-il des avantages à cela sur l'utilisation d'un Dictionary<string,object>
, ou vraiment même un Hashtable? Pour autant que je sache, ce n'est rien d'autre qu'une table de hachage à laquelle vous pouvez accéder avec une syntaxe un peu plus succincte.
Par exemple, pourquoi est-ce:
dynamic obj = new ExpandoObject();
obj.MyInt = 3;
obj.MyString = "Foo";
Console.WriteLine(obj.MyString);
vraiment mieux, ou substantiellement différent, que:
var obj = new Dictionary<string, object>();
obj["MyInt"] = 3;
obj["MyString"] = "Foo";
Console.WriteLine(obj["MyString"]);
Quels réels avantages sont obtenus en utilisant ExpandoObject au lieu d'utiliser un arbitraire type de dictionnaire, autre que n'étant pas évident que vous utilisez un type qui va être déterminé au moment de l'exécution.
Intéressant. Merci pour l'info re: les événements. C'était nouveau pour moi. –
@ Reed Oui, les événements ne sont pas encore documentés pour ExpandoObject. Cet exemple particulier est apparu dans la discussion sur le blog. Je vais probablement l'ajouter à la documentation plus tard. –
@AlexandraRusina, comment sait-il que c'est un événement quand vous dites 'd.MyEvent = null;', ou pas? – Shimmy