2010-12-12 121 views
5

我有public static class MyClass其中包含許多public static string參數。通過字符串獲取靜態屬性

繼我有一定的價值

string val = "something"; 

使用val我希望能夠得到指定的屬性 - 像MyClass.something。 我該怎麼做?

+0

你想讓MyClass.something返回字符串「val」或者你是否試圖通過它的名字獲取屬性值?這個問題有點不清楚,你能給出一個代碼的使用示例嗎? – sprite 2010-12-12 15:06:55

+0

對不起。我現在沒有代碼,但回答你的問題,我想通過它的名字獲得一個屬性值。 – hsz 2010-12-12 15:10:23

回答

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

另一種方法是檢查您的代碼。恕我直言,通過反射獲取屬性不是最好的主意。所以如果你重寫你的代碼,這些屬性將不會被存儲在靜態字段中,而是存儲在Dictionary<string, string>中。下面是例子:

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

之後,你可以使用MyClass.Property1MyClass.Properties["Property1"]調用它。