我正在构建一个 MAF 管道,加载项也可以使用它来回调主机系统以使用来自主机的某些服务。这些方法可能会引发应由加载项处理的异常。处理这种情况不仅意味着要抓住它们,而且还要分析它们。
与往常一样,有两个选项可以让对象跨越 appdomain 边界:通过序列化它们或通过扩展MarshalbyRefObject
.
实际上我对这两种选择都有问题:
当我使用序列化时,我的加载项需要知道异常的确切类型,否则它无法反序列化异常。这意味着我不能在抽象层上工作。Exception 类本身被标记为可序列化,因此所有子类也需要标记为可序列化才能正常工作。对我来说,这不是一个真正的解决方案,因为我无法隔离主机和加载项之间的类型(因为我无法处理抽象)
使用 MarshalbyRefObject 的效果不如所有 Exception 都需要扩展“Exception”,因此不能扩展 MarshalbyRefObject。
有没有可以解决这个问题的标准模式?