3
我有此代码(简化的)AppDomain.CreateInstanceAndUnwrap失败, “类型没有标记为可序列”
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'in assembly'Castle.Windsor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'未标记为可序列化。
这是为什么?我在应用程序中使用了Castle Windsor,但并未尝试在应用程序域之间传递CallContextLifetimeScope实例。
我有这个相同的错误试图运行与涉及Castle Windsor 3.0的mspec集成测试。我正在使用BeginScope()。我没有使用任何AppDomain的东西(我怀疑mspec可能)。奇怪的R#Mspec亚军很好。 – 2012-02-16 21:01:34
@AlanChristensen,ReSharper亚军并没有为每个测试程序集建立一个新的AppDomain。你能解决问题吗? – 2012-04-24 15:30:55