Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

Constructor einer Assembly aufrufen

Letzter Beitrag 11-18-2007 18:20 von René Kuss. 4 Antworten.
Seite 1 von 1 (5 Treffer)
Beiträge sortieren: Zurück Weiter
  • 11-15-2007 18:01

    Constructor einer Assembly aufrufen

    Hallo,

    ich versuche mit folgendem Code den Constructor einer DLL aufzurufen. Leider ist die Variable "ci" immer null, obwoh ein public Constructor in der DLL vorhanden ist:

    Assembly a = Assembly.LoadFile(@"C:\My Documents\Visual Studio 2005\Projects\Spieler_BB_Strategie_Gewinnen\Vier Gewinnt-Schnittstellen.dll");

    Type myType = a.GetType("Vier_Gewinnt_Schnittstellen.ISpieler");

    ConstructorInfo ci = myType.GetConstructor(Type.EmptyTypes);

    ISpieler mySpieler = (ISpieler)ci.Invoke(new object[ { });

    Hat einer von Euch eine Idee, was ich falsch gemacht habe?

    Der Constructor in der DLL lautet einfach:

    public Spieler_BB_Strategie_Gewinnen()
    {
    // ...
    }

    Vielen Dank für Eure Hilfe und viele Grüße

    Bernhard

    http://www.ComSport.de
    Abgelegt unter:
    • IP-Adresse ist Registriert
  • 11-15-2007 18:58 Antwort zu

    AW: Constructor einer Assembly aufrufen

    Ein Interface kann kein Constructor haben, das können nur Klassen - ich nehme an ISpieler ist ein Interface!?

    Und der Constructor heißt auch immer so wie die Klasse, wenn du ein Spieler_BB_Strategie_Gewinnen() irgendwo hast, ist das eine normale Methode - oder hast du eine Klasse, die so heißt?

    Du kannst auch alle Klassen in der DLL abgehen und schauen ob sie Dein Interface implementieren und dann eine Klasse wählen und instantiieren - wolltest Du das?

     

    Gruß

     Claudius

    • IP-Adresse ist Registriert
  • 11-16-2007 1:15 Antwort zu

    • René Kuss
    • Top 50 Mitwirkender
    • Registriert am 03-03-2006
    • Swisttal
    • Beiträge 95

    AW: Constructor einer Assembly aufrufen

    Hi,

    versuch es hiermit.

    Assembly a = Assembly.LoadFile(@"C:\My Documents\Visual Studio 2005\Projects\Spieler_BB_Strategie_Gewinnen\Vier Gewinnt-Schnittstellen.dll");

    ISpieler mySpieler = (ISpieler)a.CreateInstance("Namespacea.Namespaceb.Spieler_BB_Strategie_Gewinnen");

    Info:

    http://msdn2.microsoft.com/en-us/library/aa329906(VS.71).aspx

     

    Gruß


    René

    • IP-Adresse ist Registriert
  • 11-16-2007 8:02 Antwort zu

    AW: Constructor einer Assembly aufrufen

    Hallo,

    das Problem ist nicht so einfach zu lösen. Ich habe nur zwei Informationen:
    1. Name und Speicherort der DLL
    2. und ich weiß, dass eine Klasse in der DLL von ISpieler abgeleitet ist.

    Für die Methode CreateInstance("..."); brauche ich Namespace- und Klassennamen. Den kenne ich nicht.

    Viele Grüße

    Bernhard

    http://www.ComSport.de
    • IP-Adresse ist Registriert
  • 11-18-2007 18:20 Antwort zu

    • René Kuss
    • Top 50 Mitwirkender
    • Registriert am 03-03-2006
    • Swisttal
    • Beiträge 95

    AW: Constructor einer Assembly aufrufen

    Hi,

    auch das ist kein Problem. Hol Dir per Reflection erst mal alle Types aus der Assembly und check dann ob der Type das Interface ISpieler implementiert. Sollte ungefähr so funktionieren.

    Assembly assembly = Assembly.LoadFrom("xyz.dll");
    ISpieler spieler = null;

    foreach (Type type in assembly.GetTypes())
    {
      if (type.IsAssignableFrom(typeof(ISpieler)))
      {
        spieler = (ISpieler)assembly.CreateInstance(type.FullName);
        break;

      }
    }

    • IP-Adresse ist Registriert
Seite 1 von 1 (5 Treffer)