2009-04-24 3 views
0

Très bien, je ne suis pas sûr si cette question a déjà été posée, donc si elle a ensuite disparu. Disons que nous avons deux classes comme celui-ciObjets sérialisables avec champs MarshalByRefObject

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


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

Comme vous pouvez le voir ClassA contient une référence à ClassB mais la classe B hérite de la classe MarshalByRefObject. Ma question est quand je tente de passer ClassA à un autre AppDomain comment puis-je classer ClassA comme il le ferait normalement, sauf passer le champ _data au nouveau AppDomain comme un proxy transparent?

Toute aide est appréciée :)

+0

[Sérialisable] - orthographe;) –

+0

haha ​​opps, raté cela. Je vous remercie. – Zerodestiny

Répondre

0

Have ClassA tirent de MarshalByRefObject car il est l'objet que vous voulez à distance à l'autre AppDomain.

Et vous pouvez mettre en œuvre ISerializable http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

Types doit hériter de MarshalByRefObject lorsque le type est utilisé dans les limites du domaine d'application, et l'état de l'objet ne doit pas être copié parce que les membres de l'objet ne sont pas utilisables à l'extérieur le domaine d'application où ils ont été créés.

+0

Normalement c'est ce que je ferais mais disons que je n'ai pas cette option et que l'objet doit être sérialisé et qu'il doit contenir une classe qui hérite de MarshalByRefObject. – Zerodestiny

+0

Qu'en est-il de l'encapsulation de ClassA dans une classe wrapper dérivée de MashalByRefObject? –

+0

vous savez, je pense que cela pourrait fonctionner. Merci encore! – Zerodestiny

Questions connexes