首页 > 解决方案 > 将未知枚举传递给函数

问题描述

我试图从作为参数传递的未知枚举中获取一个列表,但我不熟悉所涉及的细节。我提取了我正在处理的代码部分(那里有错误,但你会明白的):

Public Shared Function EnumInListOut(someEnum As System.Enum) As List(Of ComboBoxItem)
    Dim list As New List(Of ComboBoxItem)

    For Each enumItem As Integer In System.Enum.GetValues(TypeOf someEnum)
        list.Add(New ComboBoxItem(System.Enum.GetName(someEnum.GetType, enumItem), enumItem))
    Next

    Return list
End Function

这个想法是我希望这个函数将枚举项的名称和值作为列表返回,但我不知道该怎么做。我可以更改参数,或者任何东西,只要我记住我不知道我会得到哪个枚举。

任何帮助表示赞赏。

标签: vb.net

解决方案


好吧,如果您需要获取枚举类型的名称和值,那么您可以像下面这样继续

Public Function EnumInListOut(enumType As Type) As IDictionary(Of String, Object)
    return [Enum].GetNames( enumType ).ToDictionary( Function(name) name, Function(name) [Enum].Parse( enumType, name ))
End Function

它为您提供了一个字典,其中包含与枚举类型匹配的名称和值

如果您要发送枚举类型的值,则可以更间接地执行此操作,就像这样

Public Function EnumInListOut(Of T)(someEnum As T) As IDictionary(Of String, Object)
    Dim enumType as Type = GetType(T)
    return [Enum].GetNames( enumType ).ToDictionary( Function(name) name, Function(name) [Enum].Parse( enumType, name ))
End Function

推荐阅读