在C#中使用對象初始值設定項時,是否可以執行規則或引發錯誤?我想拋出一個編譯器錯誤或警告,如果一個對象被初始化但缺少某個屬性。對象初始值設定程序強制編譯錯誤
public class Party
{
public string Name { get; set; }
public string Date { get; set; }
public Location Location { get; set; }
}
public class SignUpForParty
{
public void DoSomething()
{
Party party = new Party()
{
Name = "New Years Party!",
Date = "Dec 31, 1999"
// Show WARNING/ERROR here because no Location given
};
}
}
本質上,我正在尋找一種方法來確保所有類型爲Party的對象都使用每個實例的有效數據創建。
很明顯,我可以用重載的構造函數做到這一點,但在某些情況下,我有很多屬性和編寫構造函數來匹配是混亂的。我想遵循更清晰的C#風格。
Obj p = new Obj(1, 2, 3,...n); // too many properties to be pretty
你可以把每個構造函數參數放在它自己的行上,而且看起來很相似。你提到構造函數重載,但你也說你想要*所有*屬性設置,這表明一個超級構造函數。 – dlev 2012-03-29 01:16:17
感謝您的答案。我混淆了對象發起者與構造函數。我想要兩全其美 - 建立一個強制執行的對象,但要有簡單的對象啓動器風格。我不想要一堆超級構造函數。 What @ reed-copsey在我的場景中也是如此,因爲我們需要的是構造函數,可選的東西應該留給啓動器。 – daviddeath 2012-03-29 02:53:12