gpt4 book ai didi

.net - INotifyPropertyChanging 和验证 : when do I raise PropertyChanging?

转载 作者:行者123 更新时间:2023-12-02 12:51:00 24 4
gpt4 key购买 nike

INotifyPropertyChanged 是相当不言自明的,我想我很清楚何时提出该问题(即当我完成更新值时)。
如果我实现 INotifyPropertyChanging,我倾向于在输入 setter 或其他更改对象状态的方法时立即引发事件,然后继续可能发生的任何防护和验证。

因此,我将该事件视为属性可能更改但尚未更改的通知,并且可能实际上并未成功完成更改。

如果对象的使用者正在使用此属性(例如 LINQ to SQL 使用事件进行更改跟踪),我是否应该推迟并仅在验证了给定的值是后才引发事件好并且对象的状态对于更改有效吗?

此事件的契约(Contract)是什么以及订阅者会有什么副作用?

最佳答案

如果为您的对象指定的属性值无效,并且您抛出异常,则不应引发 PropertyChanging 事件。仅当您决定值将会发生变化时,才应该引发该事件。典型的使用场景是更改一个简单的字段:

public T Foo
{ get
{ return m_Foo;
}
set
{ if (m_Foo == value) return; //no need for change (or notification)
OnPropertyChanging("Foo");
m_Foo = value;
OnPropertyChanged("Foo");
}
}

关于.net - INotifyPropertyChanging 和验证 : when do I raise PropertyChanging?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com