Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top