是否可以训练ReSharper重命名接口参数?

时间:2012-03-24 21:24:39

标签: c# resharper

我在一些引用的第三方程序集中有一个接口,例如:

public interface ITextHandler
{
  void Handle(string text)
}

在我自己的项目中,我通过将其继承到我自己的界面来承担具体含义:

public interface INameHandler : ITextHandler
{
}

使用像ReSharper这样的工具时,我可能会开始:

public class Foo : INameHandler
{
}

Resharper将显示我可以单击的错误和“实现接口”。结果产生:

public class Foo : INameHandler
{
  public void Handle(string text)
  {
  }
}

有没有办法告诉ReSharper我想将参数重命名为更具体?我希望它实现“名称”而不是“文本”:

public class Foo : INameHandler
{
  public void Handle(string name)
  {
  }
}

是否有一个resharper评论或我可以添加到INameHandler的内容重新定义默认参数名称?

1 个答案:

答案 0 :(得分:11)

我建议您这样做。实际上,就在昨晚我最终努力将我的参数名称​​返回添加到界面中声明的那个(我怀疑我后来在界面中改变了主意)。

考虑以下代码:

Foo handler = new Foo();
handler.Handle(name: "Hello");

现在考虑这种无害的重构,理由是更喜欢通过接口类型而不是具体类型来声明变量:

INameHandler handler = new Foo();
handler.Handle(name: "Hello");

如果参数名称不同,则会出现编译时错误。它可能比这更糟糕 - 您可能最终得到编译的代码,但如果您重新排序现有的参数名称,则更改意味着Nasty, nasty stuff.

我不是说发生 - 但是选择参数名称时要小心 实现中的名称。

(嗯......也许我应该写一个小工具来找到所有违反这个......可能很方便。)