|
Hallo Herr Stark,
fuktioniert.
Es muß lediglich If isNothing(instance) Then
statt If instance=nothing heißen.
Hier nochmal komplett:
Dim instance As Object
Private Function DoWork() As Object
Dim baseBindingFlags As BindingFlags
baseBindingFlags = BindingFlags.DeclaredOnly Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Instance
' beim 1. Aufruf DLL laden und Instance erzeugen
If isNothing(instance) Then
' Klassenname inkl. kompletten Namespace
Dim classname As String
classname = "FHTest.Class1"
' welche .NET DLL soll geladen werden
' die DLL wird aus dem gleichen Verzeichnis, wo die Definition gespeichert ist, geladen
' es gehen aber auch absolute Pfadangaben!
Dim asm As Assembly
asm = Assembly.LoadFrom("FHTest.dll")
' Instance der Klasse erzeugen
Dim t As Type
t = asm.GetType(classname)
instance = t.InvokeMember(classname, BindingFlags.CreateInstance, Nothing, Nothing, Nothing)
End If
' Heater Eingangsparameter holen
Dim i1 As Integer
Dim i2 As Integer
i1 = InValues(0).GetInt()
i2 = InValues(1).GetInt()
' Übergabeparamater für die Funktion festlegen.
' Die Anzahl sowie Typen der Parameter richtet sich nach der Methode die gerufen werden soll
Dim args() As Object = {i1, i2}
' Methode Rechne der Klasse Class1 aufrufen und Wert zurückliefern
DoWork = instance.GetType().InvokeMember("Rechne", BindingFlags.InvokeMethod, Nothing, instance, args)
End Function
Vielen Dank!
Monschau
|