Récupérer valeur d'énumération basée sur XmlEnumAttribute valeur de nom

J'ai besoin d'une fonction Générique pour récupérer le nom ou la valeur d'une énumération basée sur l'XmlEnumAttribute propriété "Name" de l'enum. Par exemple, j'ai l'enum ci-dessous définies:

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

La première Devise valeur d'enum est 1; enum nom est "CA"; et le XMLEnumAttribute Nom de la valeur de la propriété est "00".

Si j'ai de la valeur d'enum, je peux récupérer le XmlEnumAttribute valeur de "Nom" à l'aide de la suite de fonction générique:

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

Donc, en utilisant la fonction ci-dessus, je peux spécifier la Devise de type enum, passer une valeur de 1, et la valeur de retour sera "00".

Ce dont j'ai besoin est une fonction à remplir dans le cas contraire. Si j'ai le XmlEnumAttribute Nom de la valeur "00", j'ai besoin d'une fonction pour renvoyer une Monnaie enum avec une valeur de 1. Tout aussi utile serait une fonction qui retourne la enum nom "CDN". Je pourrais alors tout simplement à analyser cette pour obtenir la valeur d'enum.

Toute aide serait appréciée.

InformationsquelleAutor Dean | 2010-06-15