Das Vergleichs-Plug-in bietet eine substanzielle Unterstützung für die Implementierung einer eigenen Inhaltsanzeigefunktion:
Differencer ist eine Differenzierungssteuerkomponente für hierarchisch strukturierte Daten. Sie akzeptiert zwei oder drei Eingaben und führt einen Zweifach- bzw. Dreifachvergleich zwischen ihnen aus.
Wenn die Eingabeelemente für die Differenzierungssteuerkomponente die Schnittstelle IStructureComparator implementieren, wendet die Steuerkomponente sich selbst rekursiv auf die Kinder des Eingabeelements an. Blattelemente müssen die Schnittstelle IStreamContentAccessor implementieren, damit der Differenzierer den Inhalt Byte für Byte vergleichen kann.
Es gibt mehrere gute Beispiele für Differenzierer, die in der Plattformimplementierung enthalten sind:
In der Standardeinstellung gibt die Differenzierungssteuerkomponente das Vergleichsergebnis als Baumstruktur von Objekten DiffNode zurück. Ein Objekt DiffNode beschreibt die Änderungen, die zwischen zwei oder drei Eingabeobjekten vorgenommen wurden. Der Typ der Ergebnisknoten kann geändert werden, indem eine einzige Methode der Steuerkomponente überschrieben wird.
Eine Baumstruktur aus Objekten DiffNode kann in einer Anzeigefunktion des Typs DiffTreeViewer dargestellt werden. Für DiffTreeViewer müssen die inneren Knoten der Baumstruktur die Schnittstelle IDiffContainer und Blätter die Schnittstelle IDiffElement implementieren.
Die üblichen Schritte für den Vergleich von hierarchisch strukturierten Daten und für das Anzeigen der Unterschiede sind:
ZipFileStructureCreator ist eine Implementierung der Schnittstelle IStructureCreator, die den Inhalt eines komprimierten Archivs als hierarchische Struktur von Objekten IStructureComparator verfügbar macht, die auf einfache Weise durch die Differenzierunssteuerkomponente (Differencer) verglichen werden können. Dies stellt ein gutes Beispiel dafür dar, wie strukturierte Dateien für die hierarchische Vergleichsfunktionalität des Vergleichs-Plug-ins zur Verfügung gestellt werden können.