Mon but est d'énumérer les DLL dans un dossier, de rechercher les classes qui se conforment à une interface spécifique, puis d'interroger ces classes pour les valeurs d'énumération. L'idée étant que je veux demander quelles sont les possibilités de "Outcome" supportées.Réfléchir des valeurs énumérées dans un assemblage externe
J'ai mes DLLs alignés et peut voir les classes qui se conforment à l'interface correcte, cela fonctionne, mais l'étape suivante est de rechercher la classe pour une énumération spécifique et obtenir les valeurs, j'ai utilisé ce qui suit Code:
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
Le problème que j'ai est que je ne peux pas sembler obtenir membres (i) pour me donner les valeurs enum - même si je sais que ce membre est une énumération. Quand j'appelle 'GetEnumValues' une exception est levée:
"Type fourni doit être un Enum Nom du paramètre:. EnumType"
La classe j'Interrogation ressemble à quelque chose comme ça
Public Class Foo
Public Enum Outcomes
OK
Cancel
End Enum
End Class