создается ли объект, создающий дочерний домен, в этом дочернем домене? - PullRequest
2 голосов
/ 20 мая 2010

создается ли объект, создающий субдомен, в этом субдомене?

У меня есть объект, который находится в главном AppDomain, и он создает другой домен AppDomain, для которого требуется, чтобы вызывающий класс был сериализуемым, и создается экземпляр вызывающего класса в новом подчиненном AppDomain.

Мне интересно, так ли это, или есть ли способ, которым я могу создать дочерний домен приложения, но при этом сохранить первоначальное создание вызывающего объекта в основном домене приложения

Ответы [ 2 ]

3 голосов
/ 19 июня 2010

номер

Вы делаете в своем коде что-то, из-за чего объект перемещается через границу домена.

//the current class is creating a domain.  No types exist in the domain
var domain = AppDomain.CreateDomain("2nd Domain");

// create an instance of SomeType in 2nd Doman and create a proxy here
var assembly = typeof(SomeType).Assembly.FullName;
var type = typeof(SomeType).Name;
var proxy = domain.CreateInstanceAndUnwrap(assembly,type);
// at this point, only one instance exists in 2nd Domain.

//These will cause the current class to be pulled across the domain boundary
proxy.Whoops(this);
proxy.SomeEvent += new EventHandler(AMethodDefinedHere);
proxy.Callback = AnotherMethodDefinedHere;

Только когда вы вручаете прокси указатель на текущий экземпляр (и прокси использует его), экземпляр вытягивается через границу.

Ваш прокси должен принимать и возвращать только примитивные типы (например, строки, байты или массивы) или определенные вами запечатанные типы, которые являются сериализуемыми или расширяют MarshalByRefObject.

1 голос
/ 20 мая 2010

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

...