2010-09-08 4 views
2

Est-il possible de surcharger la façon dont un type résout propriétés lorsqu'il est coulé à dynamique? Fondamentalement ce que j'essaye de faire est quelque chose comme ExpandoObject où vous pouvez accéder aux nouvelles propriétés à la volée, mais au lieu de ces propriétés étant tout ce qui leur est assigné, je veux tous être des collections de chaînes, et quand vous accéder à un, il appelle un service web dictionnaire qui renvoie toutes les définitions du mot. Je veux que ce soit dynamique afin que vous puissiez spécifier n'importe quel mot.Est-il possible de surcharger la résolution de propriété de type dynamique C#?

Je pense l'utilisation serait quelque chose comme ceci:

dynamic dictionary = new DictionaryWebservice(); 
var awesome = dictionary.awesome; 

foreach(var definition in awesome) 
{ 
    // add definition to my output 
} 

Est-ce possible?

Répondre

3

Oui, dérivez votre type de System.Dynamic.DynamicObject.

Rappelez-vous cependant que tout ce que vous revenez d'une méthode dynamique est elle-même dynamic. Par conséquent, même les var definition dans votre foreach sera de type dynamic.

+0

Impressionnant! (5 plus aller ...) –

+0

[lien juste ici la prochaine fois que vous avez besoin d'un ☺ court commentaire] (http://meta.stackexchange.com/questions/700/) – Timwi