【发布时间】:2011-01-27 17:29:37
【问题描述】:
我的目标是枚举文件夹中的 DLL,查找符合特定接口的类,然后查询这些类的枚举值。这个想法是我想查询支持哪些“结果”可能性。
我已经排好我的 DLL,并且可以看到符合正确接口的类,这是有效的,但下一步是在类中搜索特定枚举并获取值,我一直在使用以下代码:
Private Sub GetOutcomeEnumValues(ByVal AssemblyPath As String, ByVal ClassName As String)
Dim ReflectedAssembly As Assembly
Dim ReflectedClass As Type
'Load DLL
ReflectedAssembly = System.Reflection.Assembly.LoadFrom(AssemblyPath)
'Load Class
ReflectedClass = ReflectedAssembly.GetType(ClassName)
'Load members
Dim Members() As MemberInfo
Members = ReflectedClass.GetMembers
For i As Integer = 0 To Members.Count - 1
'Check for the Outcomes enumeration
If (Members(i).Name = "Outcomes") Then
Dim Outcomes As System.Array
Outcomes = Members(i).GetType.GetEnumValues
End If
Next
End Sub
我遇到的问题是我似乎无法让 Members(i) 给我枚举值——即使我知道这个 Member 是一个枚举。当我调用“GetEnumValues”时会引发异常:
"提供的类型必须是Enum。参数名称:enumType"
我正在查询的类看起来像这样
Public Class Foo
Public Enum Outcomes
OK
Cancel
End Enum
End Class
【问题讨论】:
标签: .net reflection enums