我可以在 Visual Studio (C#) 中同时重构定义接口中的方法参数列表及其实现类的方法吗?

问题描述 投票:0回答:2

我有一个界面:

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(“重命名”成员)工作方式的方法,可以从接口或实现类在多个位置更改参数列表,这样在其他地方进行了相同的编辑..

c# refactoring visual-studio-2022
2个回答

0
投票

我四处征求团队的反馈,并提出了以下建议:

如果我们打开 CodeLens #References 弹出窗口,它的右上角会包含一个小图标,该图标会将弹出窗口转换为浮动/可停靠工具面板:

有用的是,此窗口的内容就像“查找结果”;即使您更改代码,它也不会刷新,因此可以弹出它,更改界面,然后使用列出的引用集(技术上现在已经过时)将代码跳转到方法引用的所有旧位置界面,对签名进行相同的更改。

这并不完全是问题所要求的“一个地方改变所有”,但它很接近,因为它建立了一个包含所有引用位置的单一面板,并且它是解决改变singtaure问题的痛点的解决方法例如界面失去了轻松导航到实现的能力。

一旦解决了导航问题,使用整行复制粘贴来修复实现签名就相当简单了

© www.soinside.com 2019 - 2024. All rights reserved.