質問

さて、この質問が以前に尋ねられたかどうかはわかりませんが、もしそれが終わったら、それは消えます。このようなクラスが 2 つあるとします。

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


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

ご覧のとおり、ClassA は ClassB への参照を保持していますが、クラス B は MarshalByRefObject クラスを継承しています。私の質問は、ClassA を別の AppDomain に渡そうとするときに、_data フィールドを透過プロキシとして新しい AppDomain に渡すことを除いて、ClassA を通常の方法でシリアル化するにはどうすればよいですか?

助けていただければ幸いです:)

役に立ちましたか?

解決

ClassA は他の AppDomain にリモート接続するオブジェクトであるため、MarshalByRefObject から派生させます。

そして、ISerializableを実装できます http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

型がアプリケーション ドメインの境界を越えて使用される場合、型は MarshalByRefObject から継承する必要があります。また、オブジェクトのメンバーは作成されたアプリケーション ドメインの外では使用できないため、オブジェクトの状態をコピーしてはなりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top