2012-05-29 16 views
7

Ho un requisito in una classe personalizzata in cui desidero rendere necessaria una delle mie proprietà.Come rendere una proprietà richiesta in C#?

Come si può rendere necessaria la seguente proprietà?

public string DocumentType 
{ 
    get 
    { 
     return _documentType; 
    } 
    set 
    { 
     _documentType = value; 
    } 
} 
+0

Cosa intendete per "rendere necessaria una proprietà"? –

+0

"per rendere una proprietà richiesta" significa che il valore è richiesto nella proprietà che non può essere lasciato vuoto. –

risposta

17

Se vuoi dire "l'utente deve specificare un valore", quindi forzare tramite il costruttore:

public YourType(string documentType) { 
    DocumentType = documentType; // TODO validation; can it be null? blank? 
} 
public string DocumentType {get;private set;} 

Ora non è possibile creare un'istanza senza specificare il tipo di documento, e si può essere rimosso dopo quel tempo Si potrebbe anche consentire al set ma validare:

public YourType(string documentType) { 
    DocumentType = documentType; 
} 
private string documentType; 
public string DocumentType { 
    get { return documentType; } 
    set { 
     // TODO: validate 
     documentType = value; 
    } 
} 
2

Se vuoi dire lo vuoi sempre di essere stato dato un valore per il codice del client, allora la cosa migliore è quello di richiedere come parametro nel costruttore :

class SomeClass 
{ 
    private string _documentType; 

    public string DocumentType 
    { 
     get 
     { 
      return _documentType; 
     } 
     set 
     { 
      _documentType = value; 
     } 
    } 

    public SomeClass(string documentType) 
    { 
     DocumentType = documentType; 
    } 
} 

si può fare il vostro convalida - se ne avete bisogno - sia nel corpo set di accesso della proprietà o nel costruttore.

1

Aggiungi attributo necessario per propety

Required(ErrorMessage = "DocumentTypeis required.")] 
public string DocumentType 
     { 
      get 
      { 
       return _documentType; 
      } 
      set 
      { 
       _documentType = value; 
      } 
     } 

Per l'abitudine attribuiscono dettaglio Click Here

+5

RequiredAttribute non ha supporto linguistico; alcuni framework dell'interfaccia utente potrebbero aggiungere un significato particolare a un tale attributo, ma questo dipende interamente dalla libreria –

0

ho usato un altra soluzione, non è esattamente ciò che si vuole, ma lavorato per me bene perché dichiaro il primo oggetto e sulla base su una situazione specifica ho valori diversi. Non volevo usare il costruttore perché dovevo usare i dati fittizi.

La mia soluzione era creare set privati ​​sulla classe (pubblico get) ed è possibile impostare i valori sull'oggetto solo tramite metodi. Ad esempio:

public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "") 
Problemi correlati