У меня есть этот код (упрощенно)
internal class Worker : MarshalByRefObject {
public void DoWork() {
}
}
internal class WorkerInvoker {
public void InvokeWorker() {
var newDomain = AppDomain.CreateDomain("Work", null, new AppDomainSetup { ApplicationBase = AppDomain.CurrentDomain.BaseDirectory, PrivateBinPath = AppDomain.CurrentDomain.RelativeSearchPath });
try {
FAIL HERE> var worker = (Worker)newDomain.CreateInstanceAndUnwrap(typeof(Worker).Assembly.FullName, typeof(Worker).FullName);
worker.DoWork();
}
finally {
if (newDomain != null)
AppDomain.Unload(newDomain);
}
}
}
но указанная строка (CreateInstanceAndUnwrap) завершается с
Тип 'Castle.MicroKernel.Lifestyle.Scoped.CallContextLifetimeScope' в сборке 'Castle.Windsor, версия = 3.0.0.0, Culture = нейтральный, PublicKeyToken = 407dd0808d44fbdc' не помечен как сериализуемый.
Почему это? Я использую Castle Windsor в приложении, но не пытаюсь передать экземпляр CallContextLifetimeScope между доменами приложения.