2012-01-25 4 views
2
d.GetType().GetProperty("value2").GetValue(d, null); 

Cette propriété renvoie la valeur de la propriété value2 dans d.Récupère la valeur de la propriété dynamique

Je veux la valeur de la propriété à l'intérieur value2 i.e d.value2.value3.

Comment devrais-je y parvenir?

Répondre

6
object e = d.GetType().GetProperty("value2").GetValue(d, null); 
object f = e.GetType().GetProperty("value3").GetValue(e, null); 
3

En C# 4, il suffit d'utiliser le mot-clé dynamic pour permettre d'évaluer la durée de fonctionnement de vos propriétés:

((dynamic) d).value2.value3; 
+0

Quelle est la différence de 'd.value2.value3' si vous connaissez' value2' et 'value3' à la compilation (pendant que vous écriviez votre code)? –

+0

Si 'd' est d'un type connu par le compilateur, utiliser' dynamic' dans ce cas ne sera pas très utile: il reportera simplement la résolution de surcharge à l'exécution. –

+0

Supposons que la chaîne 'value2' est disponible uniquement lors de l'exécution (lecture d'un fichier xml par exemple). –

Questions connexes