Ich möchte zwei Objekte verschiedener Versionen vergleichen und deren Unterschiede in der Benutzeroberfläche anzeigen.
Zuerst rufe ich eine Methode auf, um zu wissen, ob es einen Unterschied zwischen den beiden Objekten gibt.
Die Methode ist:
%Vor% Wenn die obige Methode "true" zurückgibt, rufe ich die GetDifferences
-Methode auf, um die Unterschiede zu erhalten:
Für jede Differenz erzeuge ich ein Objekt vom Typ ObjectDifference und füge es dem Array hinzu. Der hervorgehobene Teil ist derjenige, wo ich feststecke! Wenn das Objekt ein anderes komplexes Objekt enthält, gibt mir mein Programm die Unterschiede, aber ich weiß nicht, zu welchem Typ es gehörte
Zum Beispiel habe ich zwei Objekte vom Typ Name
%Vor%Beim Vergleich zweier Objekte ist die Ausgabe, die ich bekomme, einfach -
firstname
- John Mary LastName
- Cooper Lor officeNo
- 22222 44444 MobileNo
- 989898 089089 HomeNo
- 4242 43535 Die Hierarchie, die officeNo
vom Typ PhoneNumber
ist, ist verloren, was für mich wichtig ist.
Wie soll ich diesen Baumtyp beibehalten, während ich Unterschiede erzeuge? Hoffe ich kann mein Problem verstehen.
Was Sie versuchen und anzeigen, ist von Natur aus komplex. Ich habe dies in der Vergangenheit getan (für diffgram / delta-basierte Prozesse), und sogar zu versuchen, verschachtelte Änderungen auf eine einfache und freundliche Weise anzuzeigen, ist schwierig.
Wenn es zu Ihrer Benutzerbasis passt, könnte es eine Option sein, einfach die beiden Graphen als XML zu serialisieren und etwas wie xml diff .
Tags und Links c# diff comparison object hierarchy