Laden...

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

Letzter Beitrag vor 14 Jahren 3 Posts 1.201 Views
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

lade mal die assembly testweise mit "relfectiononly"

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