J'ai une bibliothèque de classes qui contient un certain nombre de classes. Je voudrais créer dynamiquement une instance de l'une de ces classes, définir ses propriétés et appeler une méthode.Comment créer dynamiquement une instance d'un objet lorsque le nom de l'objet est transmis en tant que chaîne? (VB.NET)
Exemple:
Public Interface IExample
Sub DoSomething()
End Interface
Public Class ExampleClass
Implements IExample
Dim _calculatedValue as Integer
Public Property calculatedValue() as Integer
Get
return _calculatedValue
End Get
Set(ByVal value As Integer)
_calculatedValue= value
End Set
End Property
Public Sub DoSomething() Implements IExample.DoSomething
_calculatedValue += 5
End Sub
End Class
Public Class Example2
Implements IExample
Dim _calculatedValue as Integer
Public Property calculatedValue() as Integer
Get
return _calculatedValue
End Get
Set(ByVal value As Integer)
_calculatedValue = value
End Set
End Property
Public Sub DoSomething() Implements IExample.DoSomething
_calculatedValue += 7
End Sub
End Class
Donc, je veux créer ensuite le code comme suit.
Private Function DoStuff() as Integer
dim resultOfSomeProcess as String = "Example2"
dim instanceOfExampleObject as new !!!resultOfSomeProcess!!! <-- this is it
instanceOfExampleObject.calculatedValue = 6
instanceOfExampleObject.DoSomething()
return instanceOfExampleObject.calculatedValue
End Function
Example1 et Example2 peuvent avoir des propriétés différentes, que je dois mettre ...
Est-ce faisable?
Probablement une question stupide, mais comment puis-je définir les propriétés de l'instance sans le lancer? (comme je ne sais pas à quoi le lancer) – tardomatic
@tardomatic: excellente question; Je l'ai édité dans la réponse comme vous l'avez posé :) –
Petites améliorations: 'Non ... est Nothing' =>' ... IsNot Nothing'. - 'CType' =>' DirectCast' (dans ce cas). –