दिलचस्प पोस्ट
पीडीओ माईएसक्यूएल: एक क्वेरी में एकाधिक पंक्तियाँ डालें सी ++ में हमें "सी" को छोड़ने की आवश्यकता क्यों है {#include <foo.h>}? Xcode 4 – निर्गम निर्देशिका का निर्माण मैमैड ड्राइव का वास्तविक पथ कैसे निर्धारित करूं? पैरेंट डिवी की ऊँचाई का विस्तार करें पायथन: फ़िल्ट और डिफ्लेलेट कार्यान्वयन मेटाडेटा मेटाडाटा का उपयोग करके लोड नहीं किया गया था स्ट्रिंग से नंबरों को निकालना .NET कन्वर्ट संख्या स्ट्रिंग प्रतिनिधित्व (1 से एक, 2 से दो, आदि …) MongoDB और नोडजे के साथ दिनांक डालने और पूछताछ .Net का उपयोग करना, मैं कैसे निर्धारित कर सकता हूं कि कोई प्रकार एक न्यूमेरिक वैल्यू टाइप है? स्ट्रिंग में अंतर सी # में तरीकों की तुलना करें स्वयं। विविध और परिवर्तनीय अंतर एईएस एन्क्रिप्ट और डिक्रिप्ट संदर्भ – पीडीओ के बारे में अक्सर पूछे जाने वाले प्रश्न

इसकी विवरण विशेषता द्वारा एक एएनयूम मान ढूँढना

यह एक छोटे से उल्टा सामना करना पड़ सकता है, लेकिन मैं क्या करने में सक्षम होना चाहता हूँ एक enum से इसके विवरण विशेषता द्वारा मिल जाता है।

इसलिए, अगर मेरे पास एक एएनआईम घोषित किया गया है जो निम्नानुसार है:

enum Testing { [Description("David Gouge")] Dave = 1, [Description("Peter Gouge")] Pete = 2, [Description("Marie Gouge")] Ree = 3 } 

मैं "पीटर गौग" स्ट्रिंग की आपूर्ति करके 2 वापस पाने में सक्षम होना चाहता हूं

एक शुरुआती बिंदु के रूप में, मैं एनाम फ़ील्ड के माध्यम से पुनरावृति कर सकता हूं और फ़ील्ड को सही विशेषता से प्राप्त कर सकता हूं:

 string descriptionToMatch = "Peter Gouge"; FieldInfo[] fields = typeof(Testing).GetFields(); foreach (FieldInfo field in fields) { if (field.GetCustomAttributes(typeof(DescriptionAttribute), false).Count() > 0) { if (((DescriptionAttribute)field.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]).Description == descriptionToMatch) { } } } 

लेकिन फिर मैं उस आंतरिक रूप में फंस गया हूँ कि अगर उस आंतरिक में क्या करना है यह भी सुनिश्चित नहीं है कि यह पहली जगह में जाने का तरीका है।

वेब के समाधान से एकत्रित समाधान "इसकी विवरण विशेषता द्वारा एक एएनयूम मान ढूँढना"

यहाँ वर्णित एक्सटेंशन विधि का उपयोग करना:

 Testing t = Enum.GetValues(typeof(Testing)) .Cast<Testing>() .FirstOrDefault(v => v.GetDescription() == descriptionToMatch); 

अगर कोई मिलान मूल्य नहीं मिल रहा है, तो यह (Testing)0 (आप इस मान के लिए किसी None सदस्य को परिभाषित करना चाहेंगे)

 return field.GetRawConstantValue(); 

यदि आवश्यक हो तो आप निश्चित रूप से टेस्टिंग में वापस डाल सकते हैं

ठीक है, सभी टाइप करने के बाद मुझे लगता है कि यह शुरुआत में ठीक एक निर्णय का मामला है जिससे मुझे गलत रास्ते से नीचे चला गया। Enum के साथ शुरू करने के लिए सही तरीके से लग रहा था, लेकिन एक साधारण Dictionary<string, int> पर्याप्त होगा और साथ में काम करने के लिए बहुत आसान हो जाएगा!