Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » dll zur laufzeit auswählen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.07.2006, 19:59 Uhr
~Jack
Gast


mein Problem:

Ich habe eine Dll (test2.dll), darin entahlten ist eine Methode start(). Sie ist in einem anderen Namespace als meine Form. In der Form wähle ich mit dem OpenFileDialog die Dll (test2.dll) aus. Jetzt will ich, dass ich die Methode (start()) in der Dll aufgerufen wird
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.07.2006, 13:33 Uhr
~jas0n
Gast


Also ich würd reflection empfehlen. Ich nehm mal an dass start() static ist und dann müssts eigentlich so funktioniern:


Code:
if (openFileDialog.ShowDialog() == DialogResult.OK) {
     string dll = openFileDialog.FileName;

     Assembly assembly = Assembly.LoadFile(dll);
     MethodInfo mi = assembly.GetType("<Namespace>.<Klasse>").GetMethod("Start");
     mi.Invoke(null, null);
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.07.2006, 13:43 Uhr
~nldaunjas0n
Gast


Ich vergaß nach LoadFile sollte noch folgende Zeile kommen


Code:
Activator.CreateInstance(assembly.GetType("<Namespace>.<Klasse>"));

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.07.2006, 14:00 Uhr
~Jack
Gast


@ jas0n / nldaunjas0n

irgendwie klappt des nicht. Hier mein Code:


Code:
private void b_start_Click(object sender, System.EventArgs e)
{
    if (ofd.ShowDialog() == DialogResult.OK)
        {
        string dll = ofd.FileName;

        Assembly assembly = Assembly.LoadFile(dll);
        Activator.CreateInstance(assembly.GetType("test1.Class1"));
        MethodInfo mi = assembly.GetType("test1.Class1").GetMethod("Start");
        mi.Invoke(null, null);
                
    }
}



gibt bei der Zeile "mi.Invoke(null,null);" einen Fehler!

Gibt es auch eine Methode wo man sich ein Objekt von der Klasse erzeugt?

Dieser Post wurde am 18.07.2006 um 21:50 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.07.2006, 14:09 Uhr
Th



probier mal:


C++:
Assembly assembly = Assembly.LoadFile(dll);
object obj = Activator.CreateInstance(assembly.GetType("test1.Class1"));
MethodInfo mi = assembly.GetType("test1.Class1").GetMethod("Start");
mi.Invoke(obj, null);



Edit:
Sorry, hatte nicht gesehen, daß "Start" ja eine statische Methode ist, dann sollte obiger Code eigentlich funktionieren.

Dieser Post wurde am 18.07.2006 um 14:12 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.07.2006, 14:57 Uhr
~Jack
Gast


@ Th

funktionier wunderbar, sogar mit einer nicht statischen Methode!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: