有没有一种方法可以检测属性值是否已更改,但在对象初始化时未更改?
public string Foo
{
set
{
// Register property has changed
// but not on initialization
}
}
有没有一种方法可以检测属性值是否已更改,但在对象初始化时未更改?
public string Foo
{
set
{
// Register property has changed
// but not on initialization
}
}
如果您有一个支持字段,那么您可以在初始化时设置该字段,然后设置属性。
private string foo;
public Bar()
{
foo = "default"; // initialize without calling setter
}
public string Foo
{
set
{
foo = value;
// setter registers that property has changed
}
}
你可以这样做:
public class Bar
{
private bool _initializing;
private string _foo;
public string Foo
{
set
{
_foo = value;
if(!_initializing)
NotifyOnPropertyChange();
}
}
public Bar()
{
_initializing = true;
Foo = "bar";
_initializing = false;
}
}
或者只是跳过 _initializing 部分并直接设置 _foo 而不是使用 setter。