ReSharper重构>移动不起作用

Jes*_*ess 5 c# resharper refactoring

我有一个要移到其他对象的功能。在代码中,选择要移动的功能。我使用ReSharper>重构>移动,但是什么也没有发生。

Jes*_*ess 5

选项1:剪切并粘贴

这是我添加到答案中的新选项。到目前为止,这是最简单的。

  1. 剪切要移动的代码。
  2. 将其粘贴到新位置。
  3. 将出现一个图标,您可以单击该图标,然后选择Apply Move Refactoring

我不确定此选项是否将一直有效。

选项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.
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到这一点很有意义,因为ReSharper希望重构为工作代码。您必须具有对该对象的引用,才能调用“移动”方法。即使这样,Resharper在这种情况下仍可能会考虑其他UI决定。(如留言)

选项3:更改方法签名

我在将private方法移到static类时遇到了麻烦。我将方法从更改privatepublic static,然后可以选择要将其移动到的静态类。