2009-12-13 6 views
0

Ici, je poste un peu de code qui a un problème d'utilisation de la réflexion. Bouton In Cliquez sur J'utilise une boîte de message pour montrer mes besoins. Comment puis-je obtenir la valeur Nom sans utiliser la propriété? J'aime utiliser la réflexion. [Je suis capable de l'obtenir en utilisant la propriété]. Ici, je reçois une erreur « méthode non-statique nécessite une cible. » S'il vous plaît aidez-moi à corriger cette code.thanks à l'avanceObtenir la valeur d'une classe imbriquée en utilisant la réflexion

public class CustomProperty<T> 
{ 
    private T _value; 

    public CustomProperty(T val) 
    { 
     _value = val; 
    } 
    public T Value 
    { 
     get { return this._value; } 
     set { this._value = value; } 
    } 
} 

public class CustomPropertyAccess 
{ 
    public CustomProperty<string> Name = new CustomProperty<string>("cfgf"); 
    public CustomProperty<int> Age = new CustomProperty<int>(0); 
    public CustomPropertyAccess() { } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    CustomPropertyAccess CPA = new CustomPropertyAccess(); 
    CPA.Name.Value = "lino"; 
    CPA.Age.Value = 25; 


    MessageBox.Show(CPA.GetType().GetField("Name").FieldType.GetProperty("Value").GetValue(null , null).ToString()); 
} 

Répondre

2

Vous devez passer l'objet (CPA) dans l'appel GetValue au lieu de null :

MessageBox.Show(CPA.GetType().GetField("Name").FieldType.GetProperty("Value").GetValue(CPA ,null).ToString()); 

Ou était-ce en tant que deuxième paramètre? Ne vous souvenez pas exactement, vous devriez donc jeter un oeil dans le MSDN pour la signature exacte de Property.GetValue.

Questions connexes