我声明了如下枚举:
Public Enum Myenum
val1 = 0
val2 = 1
End Enum
现在我有一个变量名为
Dim str As String = "Myenum"
如何使用变量str来访问枚举的值?
答案 0 :(得分:0)
如果定义Enumerator的范围是一个类对象,则可以使用当前实例类型通过GetType().GetMember()获取与Enumerator类型名称相对应的成员:
如果枚举数可能不是公共的,请指定BindingFlags,以允许包括非公共成员。如果需要,添加BindingFlags.IgnoreCase
。
Imports System.Reflection
Dim enumTypeName = "MyEnum"
Dim flags = BindingFlags.Instance Or BindingFlags.NonPublic Or
BindingFlags.Public Or BindingFlags.IgnoreCase
Dim myEnumTypeInfo = Me.GetType().GetMember(enumTypeName, flags).FirstOrDefault()
If myEnumTypeInfo IsNot Nothing AndAlso Type.GetType(myEnumTypeInfo.ToString()).IsEnum Then
Dim myEnumValues = Type.GetType(myEnumTypeInfo.ToString()).GetEnumValues()
'[...]
End If
如果在更大范围内定义了枚举器类型,则可以使用Assembly.GetExecutingAssembly()并从DefinedTypes获取类型:
Dim myEnumType = Assembly.GetExecutingAssembly().
DefinedTypes.FirstOrDefault(Function(t) t.Name = enumTypeName)
If myEnumType IsNot Nothing AndAlso myEnumType.IsEnum Then
Dim myEnumValues = myEnumType.GetEnumValues()
'[...]
End If