2016-04-12 8 views
1

Ich muss eine öffentliche Eigenschaft einer Klasse auf der Grundlage der Zeichenfolge Wert des Namens aufrufen, wie ich bis zur Laufzeit nicht wissen, welche Eigenschaften erforderlich sind. Ich versuche, Reflexionen erfolglos zu verwenden. Die Klasse sieht wie folgt aus:Call-Eigenschaft basierend auf einer Zeichenfolge des Namens

class FieldCalculation 
{ 
    public string MyValue 
    { 
     get 
     { 
      return "Test Data"; 
     } 
    } 
} 

ich Zugang denke, der Wert der Eigenschaft wie folgt aussehen sollte:

FieldCalculation myClass = new FieldCalculation(); 
string value = myClass.GetType().GetProperty("MyValue"); 

Jede Hilfe würde geschätzt.

+3

Mögliches Duplikat [Eigenschaftswert von String Get in C# mit Reflexion] (http://stackoverflow.com/questions/1196991/get-property-value-from-string-using -reflection-in-c-sharp) – NineBerry

+0

Ja, ich denke, es ist ein Duplikat. Aber ich fand es nützlich, die Definition der FieldCalculation-Klasse zu trennen, da ich nicht erkannte, dass das in die GetValue-Methode übergeben werden musste – CorribView

Antwort

3

Sie hatten es fast. Was Sie getan haben, war die Eigenschaft Definition bekommen. Sie müssen diese Eigenschaft anfordern, um den Wert zu erhalten, und Sie übergeben die Instanz. Dies ist der Arbeitscode:

FieldCalculation myClass = new FieldCalculation(); 
string value = (string)myClass.GetType().GetProperty("MyValue").GetValue(myClass); 
Verwandte Themen