Wie zwei Versionen desselben Objekts zu unterscheiden?

8

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:

%Vor%

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.

    
ksa 13.03.2009, 08:58
quelle

1 Antwort

6

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 .

    
Marc Gravell 13.03.2009, 09:09
quelle

Tags und Links