2010-01-18 5 views
3

Je veux obtenir la valeur d'un membre privé, donc j'écrit ce qui suit:Comment obtenir la valeur de membre privé en C#

var f = e. 
      GetType(). 
      GetFields(System.Reflection.BindingFlags.NonPublic | 
        System.Reflection.BindingFlags.Instance | 
        System.Reflection.BindingFlags.DeclaredOnly)[0]; 
object o = f.FieldType.GetProperty("RowIndex").GetValue(f.FieldType, null); 

mais la méthode « GetValue » a besoin de l'objet original dans le premier paramètre, et je n'ai pas cet objet, parce que je suis en cours d'exécution. Quelqu'un pourrait-il m'aider?

Répondre

11

Je pense que dans votre exemple, l'objet original serait e, n'est-ce pas?

Bonté,

Dan

0

Vous pourriez avoir plus de chance si vous séparer en fait ce reflète appel à ses pièces constitutives. Il semble à moi comme l'objet original est en fait va être le PropertyInfo généré par

f.FieldType.GetProperty("RowIndex") 

Je dirais que si vous déclarez en fait un objet PropertyInfo de tenir ce temporairement, vous seriez en mesure de passer dans la Appel GetValue, puis détruisez-le lorsque vous avez terminé.

Questions connexes