Моя цель - перечислить библиотеки DLL в папке, найти классы, которые соответствуют определенному интерфейсу, а затем запросить эти классы для перечисления значений.Идея состоит в том, что я хочу узнать, какие возможности «Outcome» поддерживаются.
У меня есть свои 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
Проблема, с которой я столкнулся, заключается в том, что я не могу заставить участников (i) дать мне значения перечисления- хотя я ЗНАЮ, что этот участник - перечисление.Когда я вызываю 'GetEnumValues', возникает исключение:
"Предоставляемый тип должен быть Enum. Имя параметра: enumType"
Класс, который я запрашиваю, выглядит примерно так
Public Class Foo
Public Enum Outcomes
OK
Cancel
End Enum
End Class