Laden...

Assembly.CreateInstance liefert keine Instanz, sondern null

Erstellt von DeZio vor 13 Jahren Letzter Beitrag vor 13 Jahren 890 Views
DeZio Themenstarter:in
76 Beiträge seit 2008
vor 13 Jahren
Assembly.CreateInstance liefert keine Instanz, sondern null

Nun, hallo und guten Abend allerseits.

Ich fange mal an, mein Problem zu beschreiben:
Ich habe ein Programm, welches vollstens durch eine Plugin-Schnittstelle gesteuert werden kann. Die Plugins sind C#-Quelltexte. Die Plugins sind alle in einem Ordner gespeichert und werden rekursiv durchlaufen werden.
Nun habe ich eine Funktion

private Assembly BuildAssembly(string code, string name) {

, welche dann die Dateien in ein Assembly umwandeln. Zusätzlich wird noch die Datei "ConsolePlugin.dll", welche ein Interface beinhaltet, als Referenz hinzugefügt.

        public interface IPlugin {
        void Start();
        void Execute(string input);
    }

So, nun im Plugin:

namespace BigConsolePlugin {
    public class BigConsolePlugin : ConsolePlugin.IPlugin {

Ich habe die benötigten Methoden und Felder alle implementiert. Es gibt auch keine Fehler im Plugin selber, sondern dann in der folgenden Zeile:


                Assembly asm = BuildAssembly(code, name);
                /* ... */
                instance = asm.CreateInstance(namespacename + "." + classname);
                    if (instance == null) {
                        throw new Exception("Konnte Instanz dieses Plugins nicht erstellen...");
                    }

Debugging zeigt folgendes:
namespacename = "BigConsolePlugin"
classname = "BigConsolePlugin"
instance = null
Nachtrag:
asm ist nicht null, sondern beispielsweise "ftp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"

Woran könnte das instance = null liegen? Er spuckt auch keine andere Ausnahme dort aus...

P.S.: Konstruktor ist vorhanden... Plugins, welche nicht vom IPlugin abhängig sind, funktionieren einwandfrei.
Wenn ich eine Implemntation extra vergesse, gibt er mir dieses Szenario auch als Fehler aus.

Ich hoffe ihr könnt mir dabei helfen 😃
Mfg

Dennis Z.

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo DeZio,

so richtig Helfen kann ich Dir leider nicht, da ich auf den ersten Blick keinen Fehler erkennen kann. Komisch nur das keine Exception kommt

Jedoch, hat es einen Bestimmten Grund, dass deine Plugins als QuellText vorliegen?

Viele Grüße
Lars

DeZio Themenstarter:in
76 Beiträge seit 2008
vor 13 Jahren

Ja, es soll sehr einfach sein, Plugins modifizieren/hinzufügen zu können

2.760 Beiträge seit 2006
vor 13 Jahren

Versuche mal über Assembly.GetType an die Typeninformationen zu kommen und gucke ob dabei evtl. eine Exception fliegt.