0

POF シリアル化された .NET オブジェクトには、クラス B を含むクラス A があり、クラス B には抽出してフィルターで使用する属性 X があります。

a を使用しSimplePofPathて 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 に答える