2013-10-28 7 views
5

Kann eine einzelne Annotation/Attribut für mehrere Eigenschaften verwendet werden?Gibt es eine Möglichkeit, eine Datenannotation/ein Attribut mit mehreren Eigenschaften zu verwenden?

Statt:

[Required] 
public string Name {get;set;} 
[Required] 
public string Something {get; set;} 
[Required] 
public string Everything {get;set;} 

Ein Attribut für drei Eigenschaften:

[Required] 
public string Name {get;set;} 
public string Something {get; set;} 
public string Everything {get;set;} 

Ich kenne den zweiten Codeblock setzt nur Name nicht null, aber ist es eine Möglichkeit, alle drei Eigenschaften zu machen nicht null mit nur einem Attribut [Erforderlich]?

Antwort

5

Es gibt keine Möglichkeit, genau das zu tun.

Wenn Ihr Ziel es ist, die Eingabe zu minimieren und ein einzelnes Attribut hinzuzufügen, das alle Member eines Typs überprüft, können Sie ein benutzerdefiniertes Validierungsattribut erstellen und auf den Typ anwenden. Es könnte Reflektion verwenden, um alle Eigenschaften des Typs herauszuziehen und sie zu überprüfen.

1

Nein, gibt es nicht.

Attribute müssen explizit auf jede Eigenschaft angewendet werden.

Ich bin mir nicht sicher, was Sie hier speichern möchten. Der Programmieraufwand ist einfach ein Kopieren und Einfügen, und wenn die erforderlichen Felder jemals geändert werden, müssen Sie Ihren Code neu anordnen, anstatt nur das Attribut aus den geänderten Eigenschaften hinzuzufügen oder zu entfernen.

Wie würde der Compiler wissen, wann das Attribut [Required] nicht mehr angewendet werden kann?

Wie würden Sie den Code anordnen, wenn mehrere Attribute auf verschiedenen Eigenschaftensätzen vorhanden wären?