MarshalByRefObject フィールドを持つシリアル化可能なオブジェクト
-
16-09-2019 - |
質問
さて、この質問が以前に尋ねられたかどうかはわかりませんが、もしそれが終わったら、それは消えます。このようなクラスが 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 から継承する必要があります。また、オブジェクトのメンバーは作成されたアプリケーション ドメインの外では使用できないため、オブジェクトの状態をコピーしてはなりません。
所属していません StackOverflow