相关疑难解决方法(0)

根据XmlEnumAttribute名称值检索枚举值

我需要一个Generic函数来根据枚举的XmlEnumAttribute"Name"属性检索枚举的名称或值.例如,我定义了以下枚举:

Public Enum Currency
   <XmlEnum("00")> CDN = 1
   <XmlEnum("01")> USA= 2
   <XmlEnum("02")> EUR= 3
   <XmlEnum("03")> JPN= 4
End Enum
Run Code Online (Sandbox Code Playgroud)

第一个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
Run Code Online (Sandbox Code Playgroud)

因此,使用上面的函数,我可以指定Currency枚举类型,传递值1,返回值将为"00".

我需要的是一个相反的功能.如果我有XmlEnumAttribute Name值"00",我需要一个函数来返回值为1的Currency枚举.同样有用的是一个返回枚举名称"CDN"的函数.然后我可以简单地解析它以获得枚举值.

任何援助将不胜感激.

c# vb.net reflection enums

17
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

enums ×1

reflection ×1

vb.net ×1