0

有没有一种方法可以检测属性值是否已更改,但在对象初始化时未更改?

public string Foo
{
    set
    {
        // Register property has changed
        // but not on initialization
    }
}
4

2 回答 2

2

如果您有一个支持字段,那么您可以在初始化时设置该字段,然后设置属性。

private string foo;

public Bar()
{
    foo = "default"; // initialize without calling setter
}

public string Foo
{
    set
    {
        foo = value;
        // setter registers that property has changed
    }
}
于 2012-08-19T07:33:37.193 回答
2

你可以这样做:

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。

于 2012-08-19T07:36:31.263 回答