我有一个界面:
interface ISomeThing{
void SomeMethod(string arg1);
}
我有一个实现:
class SomeThing: ISomeThing{
void SomeMethod(string arg1){
//some method code here blah
}
}
使用 VS2022,如果我右键单击 impl 方法并选择“Go To Definition”,我将转到界面。
如果我右键单击该方法的接口规范并选择“转到实现”,我将转到 impl 方法。
这使得导航变得非常容易......
但是当我想添加另一个参数时:
SomeMethod(string arg1, int arg2);
无论我先更改哪一个,我都会失去通过相关的“转到...”导航到另一个的能力
为了解决这个问题,我倾向于将界面拖到浮动窗口中,转到 impl,然后我并排放置两个窗口,并且我可以将相同的代码更改两次..
..但是有没有一种方法可以让我将新参数添加到接口或类中,另一个会自动更新并且“转到”仍然有效?
有一个重构选项可以更改签名和更新引用站点,但与仅键入例如“”相比,该 UI 非常笨重。
, int arg2
..
我可以更改 impl,然后拉起,但我仍然必须用新定义替换旧定义,将两者合并为一个
我想知道是否有一种类似于 Ctrl-RR(“重命名”成员)工作方式的方法,可以从接口或实现类在多个位置更改参数列表,这样在其他地方进行了相同的编辑..
使用Resharper更改签名:
我四处征求团队的反馈,并提出了以下建议:
如果我们打开 CodeLens #References 弹出窗口,它的右上角会包含一个小图标,该图标会将弹出窗口转换为浮动/可停靠工具面板:
有用的是,此窗口的内容就像“查找结果”;即使您更改代码,它也不会刷新,因此可以弹出它,更改界面,然后使用列出的引用集(技术上现在已经过时)将代码跳转到方法引用的所有旧位置界面,对签名进行相同的更改。
这并不完全是问题所要求的“一个地方改变所有”,但它很接近,因为它建立了一个包含所有引用位置的单一面板,并且它是解决改变singtaure问题的痛点的解决方法例如界面失去了轻松导航到实现的能力。
一旦解决了导航问题,使用整行复制粘贴来修复实现签名就相当简单了