作爲框架設計指南,它已被微軟給出,properties應該彼此獨立,不依賴於以任何特定順序設置。C#基礎知識製作屬性原子
假設您有一個需要支持昏暗度和麪積計算的三角形類。你會如何模型?
當然,這是被認爲是笨拙的,因爲區是依賴於基礎和被首先設置高度設計:
class Triangle{
public double Base {get;set;}
public double Height {get;set;}
public double Area {
get{
return (Base * Height)/2;
}
}
}
假設你使用構造函數,可以確保這種情況下默認,但就是這正確的做法?
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;
}
}
}
您仍然有一個屬性依賴於其他屬性。爲了成爲一個純粹的,我可以看到只有幾個方法(我猜他們可以合併):
製作基地/身高都只能在構造函數中
製作設置只讀成員面積計算成一種方法。
使用某種工廠模式+只讀成員來確保雖然可能存在依賴關係,但值只能由實例化Triangle類的方法來設置。
問題:
是指引實用(你有沒有爲了支持了很多複雜的模型轉換成你的類)? [例如,一個SqlConnection類允許初始化連接字符串屬性,但可以讓你改變它的各個部分,如命令超時]
你如何管理讓你的特性相互獨立的?
對於使用Silverlight/MVVM類型體系結構的人來說,您是否因爲數據綁定適用於對象而接受屬性中的依賴項?例如,綁定顯示屏幕上高度,底部和區域的三角形實例。
好,簡明扼要。 – 2009-09-11 23:50:58