Feedback

VB - Enum Handling

Veröffentlicht von am 10/31/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 12/13/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 7/8/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!