Мне нужна функция Generic для получения имени или значения перечисления на основе свойства перечисления XmlEnumAttribute «Name».Например, у меня определено следующее перечисление:
Public Enum Currency
<XmlEnum("00")> CDN = 1
<XmlEnum("01")> USA= 2
<XmlEnum("02")> EUR= 3
<XmlEnum("03")> JPN= 4
End Enum
Первое значение перечисления в валюте равно 1;имя enum - "CDN";и значение свойства XMLEnumAttribute Name равно "00".
Если у меня есть значение enum, я могу получить значение XmlEnumAttribute "Name", используя следующую обобщенную функцию:
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
Итак, используяВ приведенной выше функции я могу указать тип перечисления Currency, передать значение 1, и возвращаемое значение будет равно «00».
Что мне нужно, так это функция, которую нужно выполнить, если она противоположна.Если у меня есть значение имени XmlEnumAttribute «00», мне нужна функция для возврата перечисления Currency со значением 1. Точно также полезной была бы функция, которая возвращала бы имя перечисления «CDN».Затем я мог бы просто разобрать это, чтобы получить значение enum.
Любая помощь будет принята с благодарностью.