2011-02-19 14 views
7

वहाँ एक रास्ता सिर्फ उसका नाम जानने के द्वारा एक चर का मान प्राप्त करने के लिए है, इस तरह:सी # में नाम से चर रही

double temp = (double)MyClass.GetValue("VariableName"); 

जब मैं सामान्य रूप से इस

की तरह चर का उपयोग होगा
double temp = MyClass.VariableName; 
+1

मुझे उत्सुकता है कि आपको यह करने के लिए क्या संदर्भ होगा, जहां संपत्ति के रूप में मूल्य का उपयोग सामान्य रूप से पर्याप्त नहीं होगा। –

उत्तर

19

आप reflection का उपयोग कर सकते हैं। उदाहरण के लिए यदि PropertyName एक सार्वजनिक propertyMyClass पर है और आप इस वर्ग आप कर सकते थे का एक उदाहरण है:

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null); 

यदि यह एक सार्वजनिक field है:

MyClass myClassInstance = ... 
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance); 
बेशक

आप पता होना चाहिए कि प्रतिबिंब नहीं करता है मुफ्त में नहीं आते हैं। प्रत्यक्ष संपत्ति/क्षेत्र की पहुंच की तुलना में प्रदर्शन दंड हो सकता है।

+2

सावधान रहें; यह अक्सर इसका उपयोग करके बहुत धीमा हो सकता है। –

+0

@ एर्नो, हाँ, बिल्कुल। –

+0

क्या प्रतिबिंब धीमा हो जाएगा तो 10 केस स्विच फ़िल्टर होगा? – Andreas