Sprache: VB
zwei kleine Funktionen, um
1. die EnumMember Namen anhand eines Enum Wertes zu ermitteln und
2. den Enum Wert anhand eines EnumMember Namens zu ermitteln
<FlagsAttribute()> _
Public Enum EAccessType As Integer
change = 1
insert = 2
delete = 4
move = 8
copy = 16
End Enum
' ermittelt die EmumMember Namen
' Bsp: ist Value 7 (change AND insert AND delete) ist das Ergebnis {"change", "insert", "delete"}
Public Function GetEnumItemNames( _
ByVal Value As EAccessType) As String()
Dim a As String
Dim b As String
Dim c As String()
a = Value.ToString
a = a.Replace(" ", "")
c = Split(a, ",")
a = ""
For Each b In c
If a <> "" Then a &= ","
a &= GetEnumValue(b)
Next
c = Split(a, ",")
Return c
End Function
' Ermittel den EnumMember Wert anhand dessen Namen
Private Function GetEnumValue(ByVal strName As String) As EAccessType
Enum.Parse(EAccessType.GetType(), strName) ' @_ntr_: danke ;-)
End Function
<FlagsAttribute()> _
Public Enum EAccessType As Integer
change = 1
insert = 2
delete = 4
move = 8
copy = 16
End Enum
' ermittelt die EmumMember Namen
' Bsp: ist Value 7 (change AND insert AND delete) ist das Ergebnis {"change", "insert", "delete"}
Public Function GetEnumItemNames( _
ByVal Value As EAccessType) As String()
Dim a As String
Dim b As String
Dim c As String()
a = Value.ToString
a = a.Replace(" ", "")
c = Split(a, ",")
a = ""
For Each b In c
If a <> "" Then a &= ","
a &= GetEnumValue(b)
Next
c = Split(a, ",")
Return c
End Function
' Ermittel den EnumMember Wert anhand dessen Namen
Private Function GetEnumValue(ByVal strName As String) As EAccessType
Enum.Parse(EAccessType.GetType(), strName) ' @_ntr_: danke ;-)
End Function
Alte URL:
/snippet/enum-handling/283
Hallo Jürgen Gutsch,
mein Verbesserungsvorschlag: anstatt ein Select-Case Konstrukt folgendes verwenden:
[code]Enum.Parse(EAccessType.GetType(), „delete“)[/code]
Das ist weitaus generischer, und ist auch für Erweiterungen im enum gefeiter (außerdem weniger Tipparbeit 😉
Gruß
_ntr_
[code]
Private Function GetEnumValue1(ByVal strName As String) As EAccessType
Dim EAccessType As New EAccessType ‚erstellen eines Dumys
Return System.Enum.Parse(EAccessType.GetType(), strName) ‚ bezieung auf din richtigen namespace
End Function
Private Function GetEnumValue2(ByVal strName As String, ByVal myenum As System.Enum) As System.Enum
Return System.Enum.Parse(myenum.GetType(), strName) ‚ bezieung auf din richtigen namespace
End Function
[/code]