gpt4 book ai didi

c# - 对象重置方法或事件订阅者的新引用?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:58 26 4
gpt4 key购买 nike

(使用 VS2010。假设性能不是问题)。

我有一个特定的对象,它为其所有属性更改实现事件。有时需要将对象“重置”为其所有默认属性值。最简单的方法就是构造一个新对象:

Object1= New MyObject

但是,对于原始对象的任何事件订阅者来说,这相当于更改了所有属性值。例如,如果订阅者只监听属性 A 的更新,那么现在它还必须知道新对象构造的可能性。这似乎为订户增加了额外的努力。 (例如,也许我必须创建一个“NewObjectAssigned”事件,属性更改的订阅者也需要处理该事件。)

所以我想用 Reset 方法装备对象,所以上面的代码更改为:

Object1.Reset

这样 Object1 引用永远不会更改,Reset 将手动将所有属性更改为默认值,从而触发所有 propertychanged 事件。但这也感觉不太对,而且与仅仅声明一个新对象相比很麻烦。我想需要一种手动重置所有属性或引发所有已更改事件的方法会让我感到厌烦——我必须记住在类中添加新属性时更新此方法。或许这并不像我想象的那样有问题。

这是一个足够简单的场景,我确信有一个最佳实践,无论是哪种方式。哪个更好?

最佳答案

如果您需要事件处理程序保持连接状态,那么您需要使用重置而不是创建新实例。如果你的对象实现了 INotifyPropertyChanged ,然后您可以使用 PropertyName 发送一个重置事件设置为空。

来自 MSDN:

An Empty value or null for the propertyName parameter indicates that all of the properties have changed.

关于c# - 对象重置方法或事件订阅者的新引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664159/

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