Laden...

Wie können WPF-Controls/Windows zwischen AppDomains ausgetauscht werden?

Erstellt von >rik< vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.329 Views
>
>rik< Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren
Wie können WPF-Controls/Windows zwischen AppDomains ausgetauscht werden?

Ich möchte in einer Anwendung zur Lauftzeit mehrere Assemblies (dll's) laden und auch wieder entladen können. Quasi eine art Plugin-Mechanismus. Dies funktioniert prinzipiell mit Hilfe von jeweils eigenen AppDomains pro Assemblie auch ganz gut. Das Problem ist jedoch die Datenübertragung zwischen den Plugins und der Hauptanwendung. Die Kommunikation zwische verschiedenen AppDomains wird durch Remoting ermöglicht. Um ein Objekt einer eigenen Datenklasse mit Remoting übertragen(serialisieren) zu können muss diese von MarshalByRefObject abgeleitet sein.

Wie kann ich jetzt aber ein UserControl/Window das von "System.Windows.Controls..." abgeleitet ist fit für die Übertragung(serialisierung) machen? Ableiten von MarshalByRefObject ist ja nicht möglich da ich ja bereits von den "System.Windows.Controls..." ableite.

Soweit ich weiß, kann auch alternativ zum ableiten von MarshalByRefObject, eine Klasse mit dem SerializableAttribute serialisierbar gemacht werden. Habe das mit einem WPF-UserControl versucht, leider wird das Programm trotzdem mit folgender Exception abgebrochen.
Der Typ MyLibrary.UserControl in Assembly MyLibrary, Version=1.0.2824.23320, Culture=neutral, PublicKeyToken=null ist nicht als serialisierbar gekennzeichnet.

Wenn ich anstelle der "System.Windows.Controls..." die alten "System.Windows.Forms..." verwende funktioniert die Übertragung problemlos, da diese in ihrer Vererbungshierarchie bereits von MarshalByRefObject abgeleitet sind!

Kann mit irgendjemand sagen wo mein Fehler liegen könnte, oder wie ich es sonst schaffe WPF-Fenster aus verschiedenen Assemblies dynamisch zu laden/entladen.

Vielen Dank schonmal im voraus.
Gruß

369 Beiträge seit 2006
vor 16 Jahren

Dieser Artikel könnte dir weiterhelfen. Selber habe ich mich leider noch nicht einmal mit WPF beschäftigt.

>
>rik< Themenstarter:in
4 Beiträge seit 2007
vor 16 Jahren

Hallo Kabelsalat,

danke für den hilfreichen Link!
Ich verwende .NET 3.0 und allem Anschein nach wird diese funktionalität erst in .NET 3.5 angeboten...

Gruß