Voici la situation de base.
Public Class MyEnumClass(of T)
Public MyValue as T
End Class
C’est une vaste simplification excessive de la classe actuelle, mais au fond, je sais que T est une énumération (si ce n’est pas le cas, il y aura beaucoup d’autres problèmes et c’est une erreur logique commise par le programmeur).
En gros, je veux obtenir la valeur entière sous-jacente de MyValue.
Utiliser Cint ou Ctype ne fonctionne pas.
J'allais utiliser un morceau de code de réflexion cool mais juste un simple Convert.ToInt32
fonctionne très bien ... Pardonnez mon VB je suis un gars C #
Public Function GetEnumInt(Of T)(enumVal As T) As Integer
Return Convert.ToInt32(enumVal)
End Function
Je l'ai essayé et ça marche:
String.Format("{0:d}", MyValue)
Je sais que vous pouvez effectuer les opérations suivantes pour obtenir toutes les valeurs sous-jacentes (j'espère que ma syntaxe VB est correcte ... Je travaille principalement en C # depuis quelque temps):
Dim intVal As Integer
For Each intVal In [Enum].GetValues(GetType(T))
//intValue is now the enum integer value
Next
Cela pourrait au moins vous aider à démarrer dans la bonne direction.
Cela fonctionne aussi: Fix(enumval)
Un autre moyen simple dans VB.NET est de l'ajouter à 0:
Dim intVal As Integer = 0 + myEnum
Donc, cela devrait fonctionner:
Sub GetEnumInt(of T)(enumVal as T) as Int
return 0 + enumVal
End Sub