ReSharper约定事件处理程序的名称

Pav*_*sov 53 c# resharper

当我为任何事件添加新的事件处理程序时,VS会创建类似的方法object_Click.但ReSharper将此方法强制为警告,因为所有方法都不应具有任何分隔符,例如"_".

如何自定义ReSharper的规则,以便它不强调这些方法?或者我应该重命名这样的方法?

提前致谢.

Dav*_*rth 112

对于C#(或VB),进行以下更改:

ReSharper | 选项| 语言| C#| C#命名样式,高级设置...将"字段上的事件订阅"更改$object$_On$event$$object$_$event$.

您可能还希望向"类型和命名空间"等实体类添加其他规则,以便考虑代码生成的类,例如" 默认".例如,添加一个带有 "名称前缀和名称样式"UpperCamelCase" 的新规则.

  • 在我的情况下,它将$ object $ _On $ event $更改为$ object $ _ $ event $(删除'On').否则,Page_Load等方法名称仍加下划线. (15认同)
  • 有没有办法修改它,所以$ object $以大写字母开头? (5认同)

Jon*_*eet 31

就个人而言,我建议重命名方法.一般来说,我认为VS为控件和事件提供了可怕的名字.

我宁愿做一个方法名说什么的,而不是调用它.这也促进了重用.不可否认,事件处理程序的签名通常不适合重用 - 我认为通常调用具有更合理参数的方法的lambda表达式会很有用:

button.Click += (sender, args) => SaveCurrentDocument();
Run Code Online (Sandbox Code Playgroud)

但显然设计师不支持:(

当然,重命名所有方法比仅更改R#设置更有用,如果你能找到一些有用的话...

  • 但是这个方法正在做它所说的.它正在处理点击按钮的事实.如果所需的操作是保存文档,则按钮单击处理程序应调用其他方法来执行此操作.出于这个原因,我不喜欢事件处理程序中的很多代码.它还阻碍了将多个动作连接到相同的结果(按钮单击,菜单项,上下文菜单项等).如果这些处理程序中的每一个都调用相同的常用方法,那么就没有混淆. (10认同)
  • 在大多数情况下,我认为会.对于诸如单击网格中的行之类的事件,我认为事件处理程序应该负责解释特定于控件的信息,例如确定单击哪一行,以及可能在将绑定对象传递到井之前提取绑定对象-named方法,对该对象执行某些操作.如果这可以在lambda中完成,那么很棒.但是,为了清楚起见,有时将它在"正确的"事件处理程序中分解是很好的.一如既往......这取决于. (5认同)
  • @Jon:如果Visual Studio可以在某个时候整理出自动生成的事件处理程序,那将会很棒.导致很多人走上了错误的道路,加上2010**仍然**使用完整的事件处理程序分配而没有委托推理,并且没有办法改变它. (3认同)

Ein*_*son 6

我刚刚为Visual Studio 2010创建了一个扩展,即EventHandler Naming,它允许您使用简单模式指定您希望生成的事件处理程序名称.扩展中的默认模式是On $(SiteName)$(EventName),它将为您提供OnBtnNameClick等事件名称而不是btnName_Click.您可以在http://tech.einaregilsson.com/2010/12/22/better-eventhandler-names-in-visual-studio-2010/获取扩展程序