在POF序列化的.NET对象中,我有A类包含B类,而B类有一个属性X,我想在过滤器中提取和使用。
我可以使用SimplePofPath
来浏览从A到B的POF流并抓住X.除A.B == null
外,这种情况很有效。
当A没有预期的B实例时,SimplePofPath
失败并显示消息
无法调用getChild()方法 SimplePofValue实例。
而不是这个,我希望IPofNavigator
做一些更优雅的事情,而不是因为我在一个字段中序列化null
而无法遍历其路径时抛出异常。例如,这可能会返回用户提供的“后备”值。
是否存在此类实施?如果没有,我将如何开始自己延长AbstractPofPath
?我已经看了this自定义导航器处理包含的集合,但无法理解如何开始实现navigate()
。
答案 0 :(得分:0)
我能够通过扩展AbstractPofPath
和实现递归navigate(PofValue, int)
方法来实现这一点,就像链接的方法一样。我还在C#中对其进行了存根,并在.NET客户端和集群配置文件中提供了匹配的user-type
配置。
在递归调用之前,该方法检查其参数是否具有等于PofConstants.V_REFERENCE_NULL
的typeID,如果是,则只返回其参数而不是递归。
过去几分钟的测试表明,这种方法可以保持Filter
和Extractor
个对象可以接受的行为。
进一步思考:
如果我有我的.NET类的Java等价物,我可以使用ChainedExtractor
s。但是,集群想要知道如何反序列化提取器链中的所有内容;)