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

Mat*_*int 4 c# resharper

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

public interface ITextHandler
{
  void Handle(string text)
}
Run Code Online (Sandbox Code Playgroud)

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

public interface INameHandler : ITextHandler
{
}
Run Code Online (Sandbox Code Playgroud)

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

public class Foo : INameHandler
{
}
Run Code Online (Sandbox Code Playgroud)

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

public class Foo : INameHandler
{
  public void Handle(string text)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉ReSharper我想重命名参数更具体?我希望它实现"name"而不是"text":

public class Foo : INameHandler
{
  public void Handle(string name)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 11

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

考虑以下代码:

Foo handler = new Foo();
handler.Handle(name: "Hello");
Run Code Online (Sandbox Code Playgroud)

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

INameHandler handler = new Foo();
handler.Handle(name: "Hello");
Run Code Online (Sandbox Code Playgroud)

如果参数名称不同,则会出现编译时错误.它可能比这更糟糕 - 如果重新排序现有的参数名称,最终可能会编译代码但会改变意义.讨厌,讨厌的东西.

我不是说这发生-但它是一个很好的理由(IMO)进行选择时,参数名称,特别是在接口,并在实现这些名字坚持要小心.

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