Laden...

GetType(), GetTypes() und delayed Load geht nicht ?

Erstellt von MrDigi vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.176 Views
M
MrDigi Themenstarter:in
9 Beiträge seit 2007
vor 14 Jahren
GetType(), GetTypes() und delayed Load geht nicht ?

Hallo,

ich habe hier ein .Net C#2.0 Programm.

Ich möchte dynamisch ein Assembly nachladen, dafür lade ich mit

Assembly a = Assembly.Load(...);

zuerst die dll, hole mir mit

Type t = a.GetType("StartClass", ...);

oder mit

Type[] ts = a.GetTypes();
// nun StartClass suchen

die StartClass und führe dies dann aus. Alles soweit kein Problem.

Jetzt möchte ich eine DLL (nennen wir sie dll1) laden welche eine Referenz auf eine 2. DLL hat (dll2). Der Code von dll2 wird aber vorerst im Code von dll1 nicht benutzt.

Nehmen wir jetzt mal an dll2 ist nicht vorhanden (warum auch immer).

Wenn ich die dll1 statisch und nicht dynamisch lade gibt es keine Probleme da hier gar nicht versucht wird dll2 nachzuladen (delayed load).
Wenn ich dll1 aber über die o.g. dynamischen Methoden nachlade dann funktioniert delayed load irgendwie nicht mehr:

  • Bei GetTypes() gibt es eine ReflectionTypeLoadException welche mir erzählt dass mindestens 1 Assembly nicht nachgeladen werden kann (dll2).
  • Bei GetType() meckert er mit einer TypeLoadException, dass irgendwelche Methoden der StartClass keine Implementierung hätten.

Mache ich etwas falsch oder funktioniert delayed load beim dynamischen Nachladen nicht ?

Beste Grüße
MrDigi

Gelöschter Account
vor 14 Jahren

lade mal die assembly testweise mit "relfectiononly"

M
MrDigi Themenstarter:in
9 Beiträge seit 2007
vor 14 Jahren

Hallo,

ich lade jetzt die Assemblies erst mit Assembly.ReflectionOnlyLoadFrom(), teste mit GetType() auf die gesuchte Klasse und lade dann das Assembly mit Assembly.LoadFrom().

Damit funktioniert delayed load, vielen Dank für den guten Tipp 😃

Beste Grüße
MrDigi