.net - C#, use reflection to get each case name in switch -


यहां स्ट्रिंग शब्दशः स्विच कथन का एक अनुरुप उदाहरण है:

  स्थिर स्ट्रिंग GetStuff (स्ट्रिंग) कुंजी) {स्विच (कुंजी) {मामला "thing1": वापसी "ओह नहीं"; मामले "thing2": वापसी "ओह हाँ"; केस "बिल्ली": वापसी "एक टोपी में"; मामले "वॉकेट": वापसी "मेरी जेब में"; मामले "लाल मछली": वापसी "नीली मछली"; मामला "एक फिश": वापसी "दो मछली"; डिफ़ॉल्ट: नया NotImplementedException फेंकें ("कुंजी" "+ कुंजी +" 'मौजूद नहीं है, अपने पिता से पूछिए जाओ); }}  

आपको यह विचार मिलता है।

मुझे क्या करना है, प्रत्येक मामले के प्रति रिफ्लेक्शन के माध्यम से प्रत्येक अक्षर को अक्षरशः स्ट्रिंग प्रिंट किया जाता है।

मैंने यह जानकर प्रतिबिंब के साथ पर्याप्त नहीं किया है कि यह कैसे सहज तरीके से करना है मैं ईमानदारी से यकीन नहीं कर रहा हूं कि प्रतिबिंब इस तरह की बात बिल्कुल भी कर सकता है।

क्या यह किया जा सकता है? यदि हां, तो कैसे?

नहीं, आप आईएल नहीं पढ़ सकते हैं (जो आप के लिए देख रहे हैं ) प्रतिबिंब एपीआई के साथ।

सबसे निकटतम आप आ सकते हैं MethodInfo.GetMethodBody () जो आपको आईएल के साथ बाइट सरणी देगा। विधि का कार्यान्वयन विवरण प्राप्त करने के लिए आपको आईएल की तरह पढ़ने वाली लाइब्रेरी की आवश्यकता है।

स्विच को स्ट्रिंग के लिए अगर या शब्दकोष विकल्पों की संख्या के आधार पर उपयोग किया जाता है - देख । तो अगर आईएल पढ़ने से खाते में ले जाता है। *

ध्यान दें कि आपको अपने डेटा का प्रतिनिधित्व करने के लिए कुछ अन्य तंत्र का उपयोग करना चाहिए, बल्कि इसे संकलित कोड से पढ़ने का प्रयास करना चाहिए। अर्थात।

* जानकारी पर स्विच कार्यान्वयन द्वारा पाया गया है।


Comments

Popular posts from this blog

apache - 504 Gateway Time-out The server didn't respond in time. How to fix it? -

c# - .net WebSocket: CloseOutputAsync vs CloseAsync -

c++ - How to properly scale qgroupbox title with stylesheet for high resolution display? -