在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