Plugins?


Trivalik

Mitglied
Ich weis nicht ob das einfach möglich ist aber ich hoffe ihr wist eine Lösung!

Ich habe Plugins erstellt,sprich dlls die eine Klasse enthalten, die unterschiedliche Daten speichern soll, jedoch prinzipiel immer gleich funktioniert z.B schreiben und lesen. Meine Klasse ist von Usercontrol abgeleitet, soll also aussehen immer anders aussehen. Und dieses Aussehen soll gespeichert bzw gelesen werden.

Also Dachte ich mir Laden der Assembly, Handle erstellen, und unwrap(Objektwert zurückgeben). Doch nun wird der Construktor nicht aufgerufen egal ob ich es als object unwarp oder direkt in ein Usercontrol lade. Wie man sieht habe ich auch den Type von dieser Klasse doch weis ich nicht ob es möglich ist darüber ein exemplar zu erstellen, was auch den richtigen Construktor aufruft.

Damit ich es einheitlich lösen kann dacht ich mir noch ein Interface einzubinden,den wenn ich es dahin convertiere kann ich doch auf die jeweilige methode zugreifen?


Code:
Arraylist Liste; //ist im Konstruktor erstellt
private void LoadPlugins()
{
string[] Dateien = System.IO.Directory.GetFiles(Application.StartupPath + "\\Plugin", "*.dll");
foreach (string Datei in Dateien)
{
System.Reflection.Assembly newas = System.Reflection.Assembly.LoadFile(Datei);
Type[] dfd = newas.GetExportedTypes();
if (dfd.Length != 1) continue;
System.Runtime.Remoting.ObjectHandle Objekt = AppDomain.CurrentDomain.CreateInstanceFrom(Datei, dfd[0].FullName);
UserControl mini = (UserControl)Objekt.Unwrap();
this.Liste.Add(mini);
}
}


Mein Projekt in C# 2.0 als anhang, müsste aber vom C# können aber auch in 1.0 funktionieren
 

Anhänge