Сериализуемые объекты с полями MarshalByRefObject - PullRequest
0 голосов
/ 24 апреля 2009

Хорошо, я не уверен, задавался ли этот вопрос раньше, так что если он затем вспыхнул. Допустим, у нас есть два класса, как это

[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 другому домену приложения, как я могу заставить ClassA сериализовать, как обычно, за исключением передачи поля _data новому домену приложения в качестве прозрачного прокси?

Любая помощь приветствуется:)

1 Ответ

0 голосов
/ 24 апреля 2009

Пусть ClassA наследуется от MarshalByRefObject, поскольку это объект, который вы хотите удалить из другого домена приложения.

И вы можете реализовать ISerializable http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

Типы должны наследоваться от MarshalByRefObject, когда тип используется за пределами границ домена приложения, и состояние объекта не должно копироваться, поскольку члены объекта не могут использоваться вне домена приложения, в котором они были созданы.

...