Möchte man zwei Objekte miteinander vergleichen kann man dies über die Equals-Methode machen. Bei primitiven Datentypen wir z.B. einem string, einem int, etc. ist dies auch recht einfach. Sobald man jedoch ein benutzerdefiniertes Objekt mit einem anderen vergleichen will, wird dies schon etwas komplizierter. Man könnte dies lösen, in dem man von dem Objekt die Equals Methode überschreibt und dort drin dann alle entsprechenden Prüfungen vornimmt. Bei vielen benutzerdefinierten Objekten in einem Projekt ist dies jedoch eine ziemliche Schreibarbeit. Mit Reflection kann man das ganze ein wenig abkürzen:

Wie man hier sehen kann, wird per Reflection durch jedes Property itteriert und geschaut ob die Werte übereinstimmen. Für relativ simple Objekte funktioniert dies auch sehr gut, komplizierter wird dies jedoch bei Objekten, welche wiederum benutzerdefinierte Objekte beinhalten. Hier wird wohl kein Weg daran vorbei führen, die Equals-Methode zu überschreiben.