是否有关于如何命名在.NET中触发事件的方法的设计指南?在不同的例子中,我见过以下所有:
OnPropertyChanged()
FirePropertyChanged()
TriggerPropertyChanged()
RaisePropertyChanged()
当然这并不是非常重要,但我想以“正确”的方式做到这一点,而不是将其他人与不寻常的命名惯例混淆。 =)
答案 0 :(得分:5)
您应该根据MSDN,CodeProject和书籍Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition)使用OnPropertyChanged
。
编辑:
CodeProject的引用仅涉及事件的命名,例如:如果您的事件表明发生了警报,则应将其命名为AlarmRaised
。
请注意,在本文中,事件被描述为“被提升”(不是“被解雇”或“被触发”)。这个约定来自编写.NET框架的开发人员团队(Cwalina和Abrams,2006)。他们更喜欢“加注”这个词,因为它没有表达的负面含义,“火”或“触发”。
答案 1 :(得分:3)
OnPropertyChanged()
听起来像是关联的事件处理程序。
我会选择RaisePropertyChanged()
。
答案 2 :(得分:2)
为什么需要一种方法来举起活动?
如果您正在从对象外部执行操作,那么您执行的操作应该会引发事件,而不会显式调用“事件提升”方法。
如果您要在内部引发事件,只需要引发一个RaiseEvent行,就不需要调用方法来执行此操作。
如果你有一个对象正在接收来自另一个对象的调用,纯粹是为了引发它,那么我建议你的封装有问题...
编辑:如果你正在使用一个方法作为实现iNotifyPropertyChanged的一部分(而不仅仅是提出“PropertyChanged”事件,这是iNotifyPropertyChanged所需要的......)为什么不命名方法“notifyPropertyChanged”以便显示它是实施的一部分吗?
EDIT2:符合此惯例的MSDN代码:How to: Implement the INotifyPropertyChanged Interface
答案 3 :(得分:2)
将其命名为OnPropertyChanged是正常和通常的做法。它的签名与活动汉德勒不同。 http://msdn.microsoft.com/en-us/library/ms743695.aspx
答案 4 :(得分:1)
除了OnPropertyChanged()之外,我发现它至少有点误导,你可以使用其他任何一个。
但是,更重要的是整个应用程序中符号的使用的一致性。
如果你说选择FirePropertyChanged
“,从可维护性的角度来看最重要的是强制执行整个应用程序中以”Fire“为前缀的所有属性提升方法的模式!
答案 5 :(得分:0)
我会使用FireOnPropertyChanged()。