2009-04-24 4 views
0

In Ordnung, ich bin mir nicht sicher, ob diese Frage schon einmal gestellt wurde, also ob sie dann wegflammt. Können sagen, wirSerialisierbare Objekte mit MarshalByRefObject Felder

[Serializable] 
public class ClassA 
{ 
    private string _name; 
    private ClassB _data; 
} 


public class ClassB : MarshalByRefObject 
{ 
    public string GetAppDomainName() 
    { 
     return AppDomain.Current.FriendlyName; 
    } 
} 

wie diese zwei Klassen haben, wie Sie KlasseA hält einen Verweis auf ClassB sehen können, aber Klasse B erbt von der Klasse MarshalByRefObject. Meine Frage lautet: Wenn ich versuche, ClassA an eine andere AppDomain zu übergeben, wie kann ich ClassA so serialisieren, wie es normalerweise das _data-Feld als transparenten Proxy an die neue AppDomain weitergeben würde?

Jede Hilfe ist willkommen :)

+0

[Serializable] - Rechtschreibung;) –

+0

haha ​​opps, verpasst das. Vielen Dank. – Zerodestiny

Antwort

0

Have KlasseA von MarshalByRefObject ableiten, da es das Objekt ist Sie remote auf die anderen AppDomain zu wollen.

Und Sie können ISerializable implementieren http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

Typen von MarshalByRefObject erben müssen, wenn der Typ über Anwendungsdomänengrenzen verwendet wird, und der Zustand des Objekts darf nicht kopiert werden, da die Mitglieder des Objekts sind außen nicht nutzbar die Anwendungsdomäne, in der sie erstellt wurden.

+0

Normalerweise würde ich das tun, aber sagen wir, dass ich diese Option nicht habe und dass das Objekt serialisiert werden muss und es eine Klasse enthalten muss, die von MarshalByRefObject erbt. – Zerodestiny

+0

Was ist mit Wrapping ClassA in einer Wrapper-Klasse, die von MashalByRefObject abgeleitet ist? –

+0

wissen Sie, ich denke, das könnte funktionieren. Danke nochmal! – Zerodestiny

Verwandte Themen