我有各种派生对象,我希望用户能够使用对象初始值设定项。我有一个“初始化”属性,我希望在设置这些字段时为真,然后我希望随后将 Initializing 属性设置为 false。
我如何判断对象初始化器何时完成才能执行此操作?
class Foo
{
Public Foo(string p1, string p2)
{
Initializing = true;
Property1 = p1;
Property2 = p2;
Initializing = false;
}
bool Initializing;
string _property1;
string Property1
{
get { return _property1; }
set { _property1 = value; DoSomething(); }
}
string Property2 { get; set; }
public void DoSomething()
{
if(Initializing) return; // Don't want to continue if initializing
// Do something here
}
}
在上面的示例中,如果您使用构造函数,它可以正常工作。但是,如何使其与对象初始化程序以相同的方式工作是问题所在。
编辑:对于所有反对者,这里有其他人正在寻找我所追求的 - http://blogs.clariusconsulting.net/kzu/how-to-make-object-initializers-more-useful/
不幸的是,它看起来确实是不可能的。