Forums Neueste Beiträge
 

DLLs zur Laufzeit austauschen / auswählen

07/11/2008 - 11:04 von Michaela Meier | Report spam
Hi,

Ist es möglich, einer Exe nach dem Kompilieren eine andere DLL als die
eigentlich "referenzierte" unterzuschieben? Oder sogar DLLs mit
derselben Struktur parallel zu verwenden?

Beispiel-Szenario:

Programm:
private void button1_Click ()
{
int ergebnis=DingsBums.Tuwas(3,4);
}

DLL Nr.1
public static class DingsBums {
{
public static int TuWas(int a, int b)
{
return a+b;
}
}

DLL Nr.2
public static class DingsBums {
{
public static int TuWas(int a, int b)
{
return a*b;
}
}


Es kàme meiner Programm-Idee erheblich entgegen, wenn ich die exe je
nach Bedarf jeweils einmal mit DDL1 und einmal mit DLL2 (oder auch mit
irgendwann spàter einmal erstellten DLLS 3 und 4) betreiben könnte
ohne alles neu kompilieren zu müssen.

Bisher ist dies an der Sturheit ;-) von .net gescheitert.
Ich habe zwar auf identische Namespaces geachtet und auch den dll-
Dateinamen entsprechend voreingestellt, aber wenn ich DLL1 gegen DLL2
austausche, dann merkt das Mistding das und streikt.
Ist das überhaupt machbar? Wenn ja, wie und wenn nein, warum nicht?



Noch optimaler wàre es, wenn ich alle DLLs gleichzeitig verwenden
könnte.
also:
private void button1_Click ()
{
int ergebnis=DingsBums.Tuwas(3,4); // aus DLL1 = 3+4
}
private void button2_Click ()
{
int ergebnis=DingsBums.Tuwas(3,4); // aus DLL2 = 3*4
}

Das Alleroptimalste aber wàre, daß ich beliebige DLLs zu der exe
dazupacken kann, das Programm ausliest, welche ihm zur Verfügung
stehen und für jede einen Button generiert.

Es geht - natürlich - nicht um das kleine 1x1.
Letztendlich möchte ich Daten unterschiedlicher Webseiten abfragen.
Und da jede Webseite anders aufgerufen und vor allem auch durchgeparst
werden muß, müssen sich die Funktionen nun einmal unterscheiden,
selbst wenn sie alle eine BindingList derselben Datenklasse
zurückliefern.

Bin für jeden Tip dankbar
 

Lesen sie die antworten

#1 Gerald Mahlmeister
10/11/2008 - 14:09 | Warnen spam
Hallo!

Ist es möglich, einer Exe nach dem Kompilieren eine andere DLL als die
eigentlich "referenzierte" unterzuschieben? Oder sogar DLLs mit
derselben Struktur parallel zu verwenden?


Ja, Du kannst Assemblies einfach dynamisch laden.

Das was Du probierst löst man üblicherweise über Interfaces und Reflection.
D.h. Du erzeugst Dir ein Interface IDingsBums mit einer Methode Tuwas. Dann
làdst Du alle Dlls aus einem bestimmten Verzeichnis und anschließend suchst
Du per Reflection nach allen Klassen, die IDingsBums implementieren.

Gruß
Gerald

Ähnliche fragen