पर आधारित enum मान पुनर्प्राप्त करें मुझे enum की XmlEnumAttribute "Name" प्रॉपर्टी के आधार पर एनम के नाम या मान को पुनर्प्राप्त करने के लिए जेनेरिक फ़ंक्शन की आवश्यकता है। उदाहरण के लिए मेरे पास निम्न enum परिभाषित है:XmlEnumAttribute नाम मान
Public Enum Currency
<XmlEnum("00")> CDN = 1
<XmlEnum("01")> USA= 2
<XmlEnum("02")> EUR= 3
<XmlEnum("03")> JPN= 4
End Enum
पहला मुद्रा एनम मान 1 है; enum नाम "सीडीएन" है; और XMLEnumAttribute नाम संपत्ति मान "00" है।
अगर मैं enum मूल्य है, मैं XmlEnumAttribute "नाम" मूल्य निम्नलिखित सामान्य समारोह का उपयोग कर प्राप्त कर सकते हैं:
Public Function GetXmlAttrNameFromEnumValue(Of T)(ByVal pEnumVal As T) As String
Dim type As Type = pEnumVal.GetType
Dim info As FieldInfo = type.GetField([Enum].GetName(GetType(T), pEnumVal))
Dim att As XmlEnumAttribute = CType(info.GetCustomAttributes(GetType(XmlEnumAttribute), False)(0), XmlEnumAttribute) 'If there is an xmlattribute defined, return the name
Return att.Name
End Function
तो ऊपर समारोह का उपयोग कर, मैं मुद्रा enum प्रकार निर्दिष्ट कर सकते हैं, एक मूल्य के पारित 1 का, और वापसी मूल्य "00" होगा।
मुझे जो चाहिए वह विपरीत है यदि प्रदर्शन करने के लिए एक फ़ंक्शन है। यदि मेरे पास XmlEnumAttribute नाम मान "00" है, तो मुझे 1 के मान के साथ एक मुद्रा enum वापस करने के लिए एक फ़ंक्शन की आवश्यकता है। जैसे ही उपयोगी एक ऐसा फ़ंक्शन होगा जो enum name "सीडीएन" वापस कर देगा। मैं enum मूल्य प्राप्त करने के लिए बस इसे पार्स कर सकता था।
किसी भी सहायता की सराहना की जाएगी।
आपकी प्रतिक्रिया के लिए धन्यवाद। – Dean
आप 'टी टी: स्ट्रक्चर' को 'गेटकोड' -method के लिए बाधा के रूप में जोड़ने पर विचार कर सकते हैं, क्योंकि जब तक मेरा ज्ञान नहीं जाता है, तब तक एक enum कभी संदर्भ प्रकार नहीं होगा।(Enums के अलावा अन्य स्ट्रक्चर पारित करने में सक्षम हो जाएगा, लेकिन यह अभी भी एक अच्छा थोड़ा सुधार IMHO है) –