2010-12-12 32 views
5

Tôi có public static class MyClass chứa nhiều thông số public static string.Nhận thuộc tính tĩnh theo chuỗi

Tiếp theo tôi có một số giá trị

string val = "something"; 

Sử dụng rằng val Tôi muốn có thể để có được tài sản quy định - như MyClass.something. Tôi có thể làm như thế nào?

+0

Bạn muốn MyClass.something trả về chuỗi "val" hoặc bạn đang cố gắng lấy giá trị thuộc tính theo tên của nó? Câu hỏi là một chút không rõ ràng, bạn có thể đưa ra một mẫu sử dụng mã? – sprite

+0

Xin lỗi. Tôi không có mã ngay bây giờ, nhưng trả lời cho câu hỏi của bạn, tôi muốn có được một giá trị tài sản theo tên của nó. – hsz

Trả lời

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

Một cách khác là xem lại mã của bạn. IMHO, Bắt tài sản thông qua Reflection không phải là ý tưởng tốt nhất. Vì vậy, nếu bạn viết lại mã của mình, các thuộc tính đó sẽ được lưu trữ không trong các trường tĩnh, nhưng trong Dictionary<string, string>. Dưới đây là ví dụ:

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

Sau đó bạn có thể gọi nó bằng cách sử MyClass.Property1 hoặc MyClass.Properties["Property1"].

Các vấn đề liên quan