2012-06-12 27 views
6

Tôi có một vài thuộc tính được lưu trữ trong AppConfig của mình và giờ tôi muốn truy cập chúng một cách động (ví dụ: trong vòng lặp hoặc hàm).Nhận thuộc tính động từ Cài đặt

Truy cập các giá trị bằng cách sử dụng MySettings.NAME_OF_THAT_THING không có vấn đề gì, nhưng nếu tên biến thì sao?

tôi đã cố gắng:

String propertyValue = MySettings.GetType().GetProperty("NAME_OF_THAT_THING").ToString(); 

Nhưng điều duy nhất tôi nhận được lại là tên của tài sản. Tôi có thể làm cái này như thế nào?

+0

Loại MySettings là gì? Nó không thực hiện iDictionary hay gì đó? Tôi đã mong bạn có thể làm 'MySettings (" NAME_OF_THING ")' ... – Chris

+0

Application.Properties.Settings – user1450661

Trả lời

5
String propertyValue = MySettings.GetType() 
.GetProperty("NAME_OF_THAT_THING") 
.GetValue(MySettings, null); //replace MySettings with null in GetValue(...) if MySettings is a static class 
+0

Yay, đã giải quyết nó! Cảm ơn nhiều. =) – user1450661

0

Bạn đã thử sử dụng ConfigurationManager.AppSettings property chưa? Bạn sẽ có thể để có được thiết lập của bạn thông qua các đoạn mã sau:

String propertyValue = ConfigurationManager.AppSettings["NAME_OF_THAT_THING"]; 

Bài viết MSDN cho ConfigurationManager.AppSettings cũng bao gồm một ví dụ cho vòng lặp qua tất cả các mục trong AppSettings bởi chỉ số, chứ không phải là tên.

+0

Các cài đặt mà OP đang đề cập đến không được lưu trữ trong phần tử appSettings của tệp cấu hình, chúng được lưu trữ bằng cách sử dụng cấu trúc phức tạp hơn trong phần tử applicationSettings. –

8

Tất cả bạn cần làm là:

String propertyValue = Settings.Default["NAME_OF_THAT_THING"].ToString(); 

Trong khi sử dụng phản ánh rõ ràng sẽ làm việc, đó là quá mức cần thiết.

+0

Tôi không có "MySettings.Default": (không có phương thức Mặc định trong ngữ cảnh này) – user1450661

+0

Thú vị. Nó là một ứng dụng WinForm? Có lẽ nó chỉ thêm tài sản đó nếu nó là một ứng dụng WinForm ... –

+0

@ user1450661 Hãy thử ngay bây giờ. Tôi trộn Cài đặt và MySettings. –

0

câu trả lời cho câu hỏi tấm áp phích gốc sẽ như thế nào: MySettings [NAME_OF_THAT_THINGmysettings] không được công việc như bài trước

Tuy nhiên đối với những người tìm kiếm câu trả lời cho việc sử dụng các thiết lập dựng sẵn trong ứng dụng cửa sổ của họ: myAppDefaultNameSpace.Properties .Settings.Default [NAME_OF_THAT_THINGmysettings] là cách để đi

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