Feedback

VB - Enum Handling

Veröffentlicht von am 31.10.2006
(1 Bewertungen)
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
Abgelegt unter Enum.

2 Kommentare zum Snippet

_ntr_ schrieb am 13.12.2006:
Hallo Jürgen Gutsch,
mein Verbesserungsvorschlag: anstatt ein Select-Case Konstrukt folgendes verwenden:
Enum.Parse(EAccessType.GetType(), "delete")


Das ist weitaus generischer, und ist auch für Erweiterungen im enum gefeiter (außerdem weniger Tipparbeit ;-)

Gruß
_ntr_
Carschrotter schrieb am 08.07.2011:

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
 

Logge dich ein, um hier zu kommentieren!