ReSharper重构 > 移动 功能无法使用

5

我有一个函数想要移动到另一个对象中。在代码中,我选择要移动的函数。我使用ReSharper > Refactor > Move,但是没有任何反应。


“Move”实际上非常有用。 - Jess
1
对我来说也是一样,它不起作用。 - Luke
@Luke 请看下面我的回答。我刚刚添加了一个新选项(#1),你可以试试看。 - Jess
2个回答

5

选项1:剪切和粘贴

这是我添加到答案中的新选项。这是迄今为止最容易的方法。

  1. 剪切要移动的代码。
  2. 粘贴到新位置。
  3. 将出现一个图标,您可以单击并选择应用移动重构

我不确定这个选项是否总是有效。

选项2:将要移动的对象作为成员添加

我发现只有当您将该对象作为成员时,重构 > 移动才起作用。成员必须是具体类型,而不是接口。例如,

public class MyController : Controller
{
    // ReSharper 8.2 will give the option to move to this object only.
    private MyRepository _repo;

    // ...

    public FunctionToMove()
    {
        // Do stuff.
    }
}

如果您仔细想想,这是有道理的,因为ReSharper希望重构成可工作的代码。要调用“移动”方法,必须先引用该对象。即使如此,ReSharper在这种情况下可能会考虑不同的UI决策(例如消息)。

选项3:更改方法签名

我试图将一个private方法移动到一个static类中时遇到了问题。我将该方法从private更改为public static,然后我就可以选择要将其移动到的静态类了。


1
我也遇到了同样的问题,试图通过 ReSharper Refactor 菜单移动文件时。在 Move 对话框中勾选“为启用撤消,请打开所有更改的文件以进行编辑”复选框即可解决该问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接