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