Proprietà non sempre reaonly

Nello sviluppo di un domain model capita di avere la necessità di implementare proprietà readonly che non sono sempre readonly.

Mi spiego con un esempio: una classe Ordine può ha la proprietà DataSpedizione che è modificabile (get/set) fino al momento in cui lo stato dell'ordine non è "Spedito", da quel momento la proprietà DataSpedizione dovrà essere non modificabile (solo get).

Vedo spesso questa logica messa sull'interfaccia utente abilitando e disabilitando i controlli necessari alla modifica. Se da un lato tale approccio ci sta bene, dall'altro ritengo che non possa mancare un controllo sull'oggetto Ordine stesso che come è giusto che sia è quello che sa "come funzionano gli Ordini".

Quindi mi piace aggiungere questo genere di controlli sul setter della proprietà, una cosa del tipo

 public class Ordine
 {
  public DateTime DataSpedizione
  { 
   get { return _dataSpedizione; }
   set
   {
    if (this.Stato != StatiOrdine.Spedito)
     _dataSpedizione = value;
    else
     throw new MyException("Cannot set value...");
   }
  }
 }

 

 

Print | posted on sabato 3 febbraio 2007 14:11