如何命名触发事件的方法?

时间:2010-09-29 09:46:06

标签: .net naming-conventions

是否有关于如何命名在.NET中触发事件的方法的设计指南?在不同的例子中,我见过以下所有:

OnPropertyChanged()
FirePropertyChanged()
TriggerPropertyChanged()
RaisePropertyChanged()

当然这并不是非常重要,但我想以“正确”的方式做到这一点,而不是将其他人与不寻常的命名惯例混淆。 =)

6 个答案:

答案 0 :(得分:5)

您应该根据MSDNCodeProject和书籍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()。