2013-10-28 4 views
5

È possibile utilizzare una singola annotazione/attributo di dati per più proprietà?Esiste un modo per utilizzare un'annotazione/attributo di dati con più proprietà?

Invece di:

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

Un attributo per tre proprietà:

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

So che il secondo blocco di codice imposta solo nome per non nullo, ma c'è un modo per fare tutte e tre le proprietà non nulla con un solo attributo [obbligatorio]?

risposta

5

Non c'è modo di farlo in particolare.

Se l'obiettivo è ridurre al minimo la digitazione e aggiungere un singolo attributo che consente di verificare tutti i membri di un tipo, è possibile creare un attributo di convalida personalizzato e applicarlo al tipo. Potrebbe usare la riflessione per estrarre tutte le proprietà del tipo e controllarle.

1

No, non c'è.

Gli attributi devono essere applicati esplicitamente a ciascuna proprietà.

Non sono sicuro di cosa vuoi salvare qui. Lo sforzo di codifica è semplicemente una copia e incolla e, se i campi richiesti vengono modificati, è necessario riorganizzare il codice anziché aggiungere o rimuovere l'attributo dalle proprietà modificate.

Come fa il compilatore a sapere quando interrompere l'applicazione dell'attributo [Required]?

Come sistemerebbe il codice se ci fossero più attributi, su diversi set di proprietà?