Vergleiche zwei Objekte aus derselben Klasse mit Tonnen von Feldern

8

Ich habe zwei Objekte aus derselben Klasse und muss sie Feld für Feld vergleichen. Das Problem ist, dass sie fast hundert Felder haben und es wäre höllisch, das von Hand zu schreiben.

Weißt du irgendeinen Weg, das einfacher zu machen? Reflexionen in Java könnten eine Lösung sein, aber dennoch scheint es mir wie ein Hack zu sein. Und ich suche schließlich eine C # Lösung.

    
vlood 13.07.2010, 08:00
quelle

4 Antworten

4

Zwei Ideen:

  1. Verwenden Sie die Reflektion (es ist in C # verfügbar) Laufzeit und Schleife über die Felder der Klassen vergleichen sie. Wenn Sie bestimmte Felder ausschließen möchten, können Sie dies tun, indem Sie eine Attributklasse erstellen und die Felder markieren, die Sie nicht mit diesem Attribut vergleichen möchten.

  2. Verwenden Sie die Reflektion, um die Felder auf die gleiche Weise zu durchlaufen und den erforderlichen Vergleichscode zu generieren. Auf diese Weise haben Sie "echten" Code, müssen diesen aber nicht selbst schreiben und pflegen. Attribute können verwendet werden, um den erzeugten Vergleichscode zu optimieren.

Anders Abel 13.07.2010, 08:05
quelle
1

Am besten ist es, Ihren Code umzuformen, hundert Felder sind ein Weg zum Brei.

Wenn Sie nicht können, weil ein Legacy-Code herausfinden, welches Attribut sie gleich machen.

    
mathk 13.07.2010 08:05
quelle
0

Wenn Sie Glück haben, werden Sie ein oder zwei Eigenschaften identifizieren, die für die Instanz eindeutig sind - besonders wahrscheinlich, wenn Ihre Klasse eine Datenbankeinheit darstellt - und Sie müssen nur diese eindeutigen Eigenschaften vergleichen.

>     
Dr Herbie 13.07.2010 08:10
quelle
0

Verwenden Sie regulären Ausdruck suchen und ersetzen. Es ist ein Schmerz, wenn Sie Felder * hinzufügen müssen (entfernte bekommen Sie einen Kompilierfehler), aber Sie haben den Vorteil, kompilierten Code zu haben.

Aber denk wirklich darüber nach, die Klasse aufzuteilen. Wenn es 100 Felder gibt, können sie in Komponentenklassen gruppiert werden? 100 Mitglieder sind viel Chaos zu bewältigen.

    
David Kemp 13.07.2010 10:01
quelle

Tags und Links