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 12.11

Comments on this post

# re: Proprietà non sempre reaonly

Requesting Gravatar...
"Vedo spesso questa logica messa sull'interfaccia utente..." IMHO vuol dire che ci segue questo approccio non ha ancora capito cosa significa programmazione Object Oriented.
I programmatori con precedenti esperienze di programmazione con logica transazionale fanno molta fatica ad abituarsi a questa logica.
Left by Claudio Maccari on feb 04, 2007 11.38

Your comment:

 (will show your gravatar)
 
Please add 3 and 2 and type the answer here: