J'ai ajouté la référence d'une DLL dans mon projet et j'ai réussi à accéder aux méthodes/classes de cette DLL.Réflexion: Initialiser l'objet Problème
code dans la DLL: (Je n'ai pas accès à modifier ce code)
//Dll: myDllName
Namespace myNamespace
Public Class MyClass
Private Sub New(ByVal parameter1 As Int64)
//Set some values
End Sub
Public Shared Function MyPublicFunction(ByVal Parameter1 As Int64,ByVal Parameter2 As INt64,ByVal Parameter2 As Int64) As MyClass
Dim retMyClass As New MyClass(Parameter1)
//Set Other Values
Return retMyClass
End Function
Public Function Post() As Boolean
//Do some operation
End Function
End Class
End Namespace
Mon code où j'ai appelé ci-dessus DLL:
Dim myObj As myDllName.myNamespace.MyClass
myObj = myDllName.myNamespace.MyClass.MyPublicFunction(Parameter1, Parameter2, Parameter3)
myObj.Prop1 = MyVal1
myObj.Prop2 = MyVal2
myObj.Prop3 = MyVal1
myObj.Post()
Maintenant, ma condition est que je veux atteindre au-dessus de la tâche sans ajouter de référence de DLL au projet. J'ai donc essayé d'y parvenir avec réflexion.
Dim assembly As Reflection.Assembly = Reflection.Assembly.LoadFile("..\\myDllName.dll")
Dim t As Type = assembly.GetType("myDllName.myNamespace.MyClass")
Dim woFacadeinst As Object = Activator.CreateInstance(t)
Mais lors de l'initialisation de l'objet, il me lance erreur Constructor sur le type
myDllName.myNamespace.MyClass
pas trouvé.
Je pense que c'est à cause de la méthode Private NEW dans ma classe de référence DLL. Quelqu'un peut-il aider avec ceci?
Copie possible de [Comment vérifier si un type fournit un constructeur sans paramètre?] (Https://stackoverflow.com/questions/4681031/how-do-i-check-if-a-type-provides-a -parameterless-constructor) –