2010-12-12 16 views
5

Mam public static class MyClass, który zawiera wiele parametrów public static string.Pobierz właściwość statyczną według ciągu znaków

obserwuję mam jakąś wartość

string val = "something"; 

Korzystanie że val Chcę być w stanie uzyskać określoną właściwość - jak MyClass.something. Jak mogę to zrobić?

+0

Chcesz, aby MyClass.something zwrócił ciąg "val" lub czy próbujesz uzyskać wartość właściwości według jej nazwy? Pytanie jest nieco niejasne, czy mógłbyś podać przykładową próbę kodu? – sprite

+0

Przepraszamy. Nie mam teraz kodu, ale odpowiadając na twoje pytanie, chcę uzyskać wartość nieruchomości według jej nazwy. – hsz

Odpowiedz

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

Innym sposobem jest sprawdzenie kodu. IMHO, zdobywanie nieruchomości za pomocą Reflection nie jest najlepszym pomysłem. Więc jeśli przepisasz swój kod, właściwości te będą przechowywane nie w statycznych polach, ale w Dictionary<string, string>. Oto przykład:

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"];} } 
} 

Po tym można nazwać użyciem MyClass.Property1 lub MyClass.Properties["Property1"].

Powiązane problemy