我构建了一些程序集,其中之一是提供一些功能和一些事件。一些关系如下:
- 程序集 A 是一个接口外观组件,它声明了所有服务接口。
- 程序集 B 是声明程序集 A 的所有接口的一种“模拟”实现(包括事件)</li>
- 程序集 C 是声明程序集 A 的所有接口的一个“真实”实现(包括事件)</li>
B 将负责在第二个 AppDomain 中创建 C 并在 C 中调用方法,如下所示: 在 B 程序集中:
void MethodA()
{
...
AppDomain proxyAppDomain = AppDomain.CreateDomain(..)
ProxyGenerator proxyGenerator = (ProxyGenerator)proxyAppDomain.CreateInstanceAndUnwrap(...)
proxyGenerator.UpdateProgressEvent += OnUpdatePregress(..);
proxyGenerator.MethodA();
}
而且,调用者应用程序将与程序集 B 交互,而不是直接与 C 交互。
现在,如果调用者应用程序是控制台类型,一切正常,但如果调用者应用程序是 WPF 类型,它会失败并报告“SampleForm.Window1 in ... 未标记为可序列化”(SampleForm.Window1 是 WPF 主窗口)。
这让我很困惑,谁能帮我解决这个问题?
谢谢,肯特