2010-12-12 11 views
5

Ich habe public static class MyClass, die viele public static string Parameter enthält.Get statische Eigenschaft von String

Nach ich einen gewissen Wert haben

string val = "something"; 

Mit dass val Ich möchte in der Lage sein angegebene Eigenschaft zu erhalten - wie MyClass.something. Wie kann ich das tun?

+0

Sie möchten, dass MyClass.something die Zeichenfolge "val" zurückgibt, oder versuchen Sie, einen Eigenschaftswert anhand des Namens zu erhalten? Die Frage ist ein wenig unklar, könnten Sie ein Verwendungsbeispiel des Codes geben? – sprite

+0

Entschuldigung. Ich habe gerade keinen Code, aber ich beantworte für Ihre Frage, ich möchte einen Eigenschaftswert durch seinen Namen erhalten. – hsz

Antwort

12
PropertyInfo propertyInfo = typeof(MyClass).GetProperty("something"); 
string something = (string) propertyInfo.GetValue(null, null); 
0

Eine andere Möglichkeit ist, Ihren Code zu überprüfen. IMHO, Eigenschaften durch Reflektion zu erhalten, ist nicht die beste Idee. Wenn Sie also Ihren Code umschreiben, werden diese Eigenschaften nicht in statischen Feldern gespeichert, sondern in Dictionary<string, string>. Hier ist Beispiel:

public static class MyClass 
{ 
    public static readonly Dictionary<string, string> Properites = new Dictionary<string, string>(); 

    public string Property1 { get {return Properties["Property1"];} } 
    public string Property2 { get {return Properties["Property2"];} } 
} 

Danach können Sie es mit MyClass.Property1 oder MyClass.Properties["Property1"] aufrufen können.