Einzelnen Beitrag anzeigen

slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#5

Re: Klassenbiliothek (DLL) dynamisch Laden ?

  Alt 14. Jun 2007, 19:31
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
  Mit Zitat antworten Zitat