È stato fornito da Microsoft come linea guida per la progettazione di framework che properties deve essere indipendente l'uno dall'altro e non fare affidamento sull'essere impostato in un ordine specifico.Nozioni di base di C# Creazione di proprietà atomiche
Si supponga di avere una classe triangolo che deve supportare dimmensions e un calcolo di area. Come modellerai questo?
Questo è naturalmente il design che è considerato gauche zona, perché dipende dalla base e altezza stato impostato prima:
class Triangle{
public double Base {get;set;}
public double Height {get;set;}
public double Area {
get{
return (Base * Height)/2;
}
}
}
Supponendo di utilizzare un costruttore, è possibile garantire i valori predefiniti per questo caso, ma è questo il approccio corretto?
class Triangle{
public Triangle(double b, double h){
Base = b;
Height = h;
}
public double Base {get;set;}
public double Height {get;set;}
public double Area {
get{
return (Base * Height)/2;
}
}
}
Hai ancora una proprietà che ha una dipendenza da altre proprietà. Al fine di essere un purista che posso vedere solo alcuni approcci (immagino che potrebbero essere combinati):
fare la base/altezza avere membri di sola lettura che può essere impostato solo nel costruttore
Marchio il calcolo dell'area in un metodo.
Utilizzare un tipo di schema factory + readonly membri per garantire che sebbene la dipendenza possa esistere, i valori possono essere impostati solo dal metodo che crea un'istanza della classe Triangle.
Domande:
è la linea guida pratica (dovete modellare un sacco di complessità nelle vostre classi al fine di sostenerlo)? [ad esempio, una classe SqlConnection consente di inizializzare la proprietà della stringa di connessione ma consente di modificare singole parti come timeout del comando]
Come si gestiscono le proprietà indipendentemente l'una dall'altra?
Extra per le persone che utilizzano l'architettura di tipo Silverlight/MVVM, si accettano le dipendenze nelle proprietà a causa del modo in cui il database si collega a un oggetto? Ad esempio, vincola un'istanza triangolare che mostra altezza, base e area sullo schermo.
Bello e conciso. –