【发布时间】:2010-06-15 16:32:03
【问题描述】:
我需要一个通用函数来检索基于枚举的 XmlEnumAttribute“名称”属性的枚举的名称或值。例如,我定义了以下枚举:
Public Enum Currency
<XmlEnum("00")> CDN = 1
<XmlEnum("01")> USA= 2
<XmlEnum("02")> EUR= 3
<XmlEnum("03")> JPN= 4
End Enum
第一个 Currency 枚举值为 1;枚举名称是“CDN”;并且 XMLEnumAttribute Name 属性值为“00”。
如果我有枚举值,我可以使用以下通用函数检索 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”,我需要一个函数来返回值为 1 的货币枚举。同样有用的是返回枚举名称“CDN”的函数。然后我可以简单地解析它以获得枚举值。
我们将不胜感激。
【问题讨论】:
标签: c# vb.net reflection enums