比較プラグインは、独自のコンテンツ・ビューアーをインプリメントするための実質的サポートを提供します。
Differencer は、階層構造のデータ用の相違検出エンジンです。 2 つまたは 3 つの入力を取り込み、それらに対して両方向または 3 方向比較を実行します。
相違検出エンジンへの入力エレメントが IStructureComparator インターフェースをインプリメントする場合、エンジンは再帰的にそれ自身を入力エレメントの子に適用します。 ディファレンサーがバイト単位でコンテンツを比較できるよう、リーフ・エレメントは IStreamContentAccessor インターフェースをインプリメントする必要があります。
プラットフォームのインプリメンテーションには、ディファレンサーの例がいくつか含まれています。
デフォルトでは、相違検出エンジンは、比較操作の結果を DiffNodeオブジェクトのツリーとして戻します。 DiffNode は、2 つまたは 3 つの入力間の変更を記述します。 結果ノードのタイプは、エンジンの単一メソッドをオーバーライドすることによって変更できます。
DiffNode のツリーは、DiffTreeViewer に表示できます。 DiffTreeViewer は、ツリーの内部ノードが IDiffContainer インターフェースをインプリメントし、IDiffElement インターフェースをリーフ化することを必要とします。
階層構造のデータを比較して相違を表示するための一般的なステップは、以下のとおりです。
ZipFileStructureCreatorは、IStructureCreator インターフェースのインプリメンテーションであり、ZIP アーカイブのコンテンツを、相違検出エンジン (Differencer) によって簡単に比較できる IStructureComparator の階層構造として使用できるようにします。 これは、比較プラグインの階層比較機能に使用できる構造化ファイルを作成する方法の一例です。