номер
Вы делаете в своем коде что-то, из-за чего объект перемещается через границу домена.
//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.