0

在 POF 序列化的 .NET 对象中,我有一个包含 B 类的 A 类,而 B 类有一个我想要提取并在过滤器中使用的属性 X。

我可以使用 aSimplePofPath在 POF 流中导航从 A 到 B 并抓取 X。这很好用,除非A.B == null.

当 A 没有预期的 B 实例时,SimplePofPath失败并显示消息

无法在 SimplePofValue 实例上调用 getChild() 方法。

取而代之的是,我想要一个比在由于我在字段中IPofNavigator序列化而无法遍历其路径时抛出异常更优雅的事情。null例如,这可能是返回用户提供的“回退”值。

是否存在这样的实现?如果没有,我将如何开始AbstractPofPath自己扩展?我已经查看了这个处理包含集合的自定义导航器,但无法理解如何开始实施navigate().

4

1 回答 1

0

我能够通过扩展AbstractPofPath和实现一种navigate(PofValue, int)类似于链接的递归方法来做到这一点。我还在 C# 中对它进行了存根,并user-type在 .NET 客户端和集群配置文件中提供了匹配的配置。

在递归调用之前,该方法检查其参数的 typeID 是否等于PofConstants.V_REFERENCE_NULL,如果是,则简单地返回其参数而不是递归。

过去几分钟的测试表明,这种方法保持了对象可接受的Filter行为Extractor

进一步的想法: 如果我有我的 .NET 类的 Java 等价物,我可以使用ChainedExtractors。但是,集群想知道如何反序列化提取器链中的所有内容;)

于 2010-10-14T20:54:35.053 回答