Elegante Möglichkeit, Werte zu validieren

8

Ich habe eine Klasse mit vielen Feldern, die verschiedene physikalische Werte repräsentieren.

%Vor%

Jedes Feld wird unter Verwendung der Lese- / Schreibeigenschaft verfügbar gemacht. Ich muss auf Setter überprüfen, dass der Wert korrekt ist, und sonst eine Ausnahme generieren. Alle Validierungen sind ähnlich:

%Vor%

Gibt es eine elegante und flexible Möglichkeit, eine solche Validierung durchzuführen?

    
Kyrylo M 12.07.2011, 14:56
quelle

7 Antworten

6

Wenn Sie diese Art von Verhalten wünschen, könnten Sie einige Hilfsmethoden in Erwägung ziehen, z. B.

%Vor%

Dann kannst du schreiben:

%Vor%

Wenn Sie dies für verschiedene Typen benötigen, können Sie es sogar generisch machen:

%Vor%

Beachten Sie, dass nichts davon furchtbar freundlich ist ...

    
Jon Skeet 12.07.2011, 15:04
quelle
3

Alles hängt davon ab, welche Technologie Sie verwenden - wenn Sie unter MVC sind, können Sie Attribute wie folgt verwenden;

Ссылка

    
Mikey Hogarth 12.07.2011 15:03
quelle
3

Hier ist meine Version, es ist ein bisschen sauberer als Jon's Version in einigen Punkten:

%Vor%     
Skizz 12.07.2011 15:30
quelle
1

Ja, indem Sie Ihre eigenen Validierungsattribute erstellen.

Lesen Sie diesen Artikel: Validierung von Geschäftsobjekten unter Verwendung von Attributen in C #

Ich werde den Anstand haben, es hier nicht zu kopieren :)

    
Adrian Carneiro 12.07.2011 15:09
quelle
1

Unter Verwendung der Validator-Funktion, die ich in meinem Kommentar oben erwähnt habe, würde ich so etwas tun (nicht getesteter Code):

%Vor%

John Skeet hat wahrscheinlich einen besseren Weg, aber das funktioniert. :)

    
jp2code 12.07.2011 15:18
quelle
1

Sie erreichen dies mit Klassen aus System.ComponentModel.DataAnnotations

%Vor%

Validierung:

%Vor%

Sie können auch eigene Validierungsattribute implementieren, die ValidationAttribute Klasse

    
Kirill Polishchuk 12.07.2011 15:06
quelle
1

Versuchen Sie, eine solche Methode zu verwenden:

%Vor%     
sll 12.07.2011 15:06
quelle

Tags und Links