2009-04-24 13 views
0

申し訳ありませんが、炎が離れている場合は、この質問が以前に尋ねられているかどうかはわかりません。あなたはにClassAはClassBのへの参照を保持しているが、クラスBはのMarshalByRefObjectクラスから継承見ることができるように、我々はこのMarshalByRefObjectフィールドを持つシリアライズ可能オブジェクト

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


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

のような2つのクラスを考えてみましょう。私の質問は、ClassAを他のAppDomainに渡そうとするときです。ClassAは、_dataフィールドを透過的なプロキシとして新しいAppDomainに渡すのを除いて通常どおりにシリアル化することができますか?

すべてのヘルプは高く評価され:)それはあなたがリモート他のAppDomainにしたいオブジェクトなので

+0

[Serializable] - スペル;) –

+0

haha​​ opps、それを逃した。ありがとうございました。 – Zerodestiny

答えて

0

しているにClassAは、MarshalByRefObjectから派生します。

そして、あなたはISerializableを実装することができhttp://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

タイプがアプリケーションドメインの境界を越えて使用され、オブジェクトのメンバーは外で使用できないため、オブジェクトの状態がコピーされてはならないときMarshalByRefObjectから継承しなければなりません

タイプそれらが作成されたアプリケーションドメイン。

+0

通常、これは私が行うことですが、私はそのオプションがなく、オブジェクトはシリアル化されなければならず、MarshalByRefObjectから継承するクラスを含んでいなければならないと言います。 – Zerodestiny

+0

MashalByRefObjectから派生したラッパークラスでClassAをラップする方法はありますか? –

+0

あなたは知っている、私はそれがうまくいくと思います。ありがとうございました! – Zerodestiny

関連する問題