0

了解しました。この質問が以前に行われたことがあるかどうかはわかりません。このような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を通常の方法でシリアル化するにはどうすればよいですか?

どんな助けでも大歓迎です:)

4

1 に答える 1

0

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

また、ISerializablehttp://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspxを実装できます

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

于 2009-04-24T02:24:59.120 に答える