我正在构建一个MAF管道,加载项也可用于回调到主机系统以使用来自主机的某些服务。这些方法可以抛出应该由加载项处理的异常。处理它的情况不仅仅意味着抓住它们,而且还要分析它们。
与往常一样,有两种方法可以在appdomain边框上获取对象:通过序列化它们或扩展MarshalbyRefObject
。
实际上我遇到两个选项都有问题:
当我使用序列化时,我的加载项需要知道异常的确切类型,因为否则无法反序列化异常。这意味着我无法在抽象层上工作。 Exception类本身被标记为可序列化,因此所有子类都需要标记为可序列化,以便这样做。对我来说,这不是一个真正的解决方案,因为我无法隔离主机和加载项之间的类型(因为我不能在抽象上工作)
使用MarshalbyRefObject不会像所有Exception需要扩展“Exception”那样工作,因此无法扩展MarshalbyRefObject。
有没有可以解决这个问题的标准模式?
答案 0 :(得分:0)
我过去解决这个问题的方法是在异常中使用*Main> readAndAdd "2" 3
5
对象在图层之间传递私人数据。
Data
基本上,在我的适配器层中,我有代码将任何特定异常转换为常规异常。然后在另一侧的适配器层中,我可以检查数据对象并将其转换为其调用者可以使用的异常。