Feedback

Enum Handling

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

2 Kommentare

  1. 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_

  2. [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]