3

我需要将所有出现的obj.Method1()地方obj.Method2()替换obj为同一类的实例。ReSharper 或 VS2010 是否允许这样做?

4

3 回答 3

7

您可以像这样编写ReSharper 替换模式ReSharper->Tools->Pattern CatalogAdd Pattern):

在此处输入图像描述

其中表达式obj的类型需要更改为您的类(包含Method1)。

然后按保存,然后按立即搜索以获取所有Method1()调用:

在此处输入图像描述

然后单击替换,所有Method1调用都被类型安全地替换为Method2

于 2012-04-26T16:03:55.267 回答
4

我会作弊 - 进行 3 点符号重命名(右键单击 -> 重命名方法名称)

  • 方法 1 -> 温度
  • 方法 2 -> 方法 1
  • 温度 -> 方法 2

这些都不会改变代码功能,但会更新所有代码以使用正确的名称,除了方法本身现在命名不正确 - 只需将方法重命名为手动和- 有点hacky但快速有效。

这确实依赖于托管代码中的所有方法调用(以便 VS 知道如何/如何重命名)。如果您有 XML 注释,C# rename 可以很好地处理这个问题,但 VB 没有 - 我假设既然您提到了 ReSharper,那么您使用的是 C#?

这也假设方法签名是相同的(如果不是,准备好进行大量复制/粘贴)

于 2012-04-26T15:27:07.520 回答
0

像这样制作 Method1 的主体

public void Method1(...) { return Method2(...); }

并在 Method1 上调用重构“内联方法”。

于 2012-04-27T19:53:37.523 回答