Hallo,
erstmal vielen Dank für deine superschnelle Antwort.
Zitat von
Elvis:
Obwohl du VB benutzt, will ich mal trotzdem was dazu schreiben[1].
Die Fussnote ist nicht schlecht
Jaein - ich will etwas vorhandenes weiterentwickeln....
Ich habs leider nicht hinbekommen, ich dreh langsam durch...
Also - Klassenbibliothek mit folgenden Inhalt erstellt:
Code:
Namespace PluginRtl
Public Interface IMathDings
Function Add(ByVal left As Integer, ByVal right As Integer) As Integer
End Interface
End Namespace
Namespace PluginLib
Public Class MathDings
Implements PluginRtl.IMathDings
Public Function Add(ByVal left As Integer, ByVal right As Integer) As Integer Implements PluginRtl.IMathDings.Add
Return left + right
End Function
End Class
End Namespace
Hoffe, daß das alles korrekt ist.
DLL wird ohne Fehler erstellt.
Jetzt gibt es wieder Probleme im Hauptprogramm - zunächst habe ich die typeof-Passage noch nicht umgesetzt. Da es nur eine If-Bedingung ist, habe ich das erstmal vernachlässigt. Das CreateInstance schlägt fehlt (wobei mir im übrigen die korrekte Syntax unter VB.NET nicht klar ist).
Schliesslich habe ich es soweit reduziert:
Code:
Imports System.Reflection
Module Module1
Sub Main()
Dim plugin As Assembly = Assembly.LoadFrom("<Pfad>\PluginLib.dll")
Dim mathDingsType As Type = plugin.GetType("PluginRtl.MathDings")
Activator.CreateInstance(mathDingsType)
End Sub
End Module
Müsste das nicht eigentlich zumindest sauber abgearbeitet werden (auch wenn ich mit der Instanz nix anstellen kann, weil das Ergebniss von .CreateInstance nicht in einer Variable gespeichert wird) ? Es kommt nämlich die Meldung "Der Wert darf nicht NULL sein." bei .CreateInstance (die Meldung in meinem zweiten Post ist ja ähnlich).
Nochmal etwas grundsätzliches:
Wo liegt denn eigentlich der praktische Unterschied, ob ich mit CreateInstance - wie aus deinem Beispiel - oder ohne - wie aus meinem zweiten Posting - arbeite ?
Vielen Dank für Eure Geduld.
Sebastian