C# ReSharper重构>移动不起作用

C# ReSharper重构>移动不起作用,c#,refactoring,resharper,C#,Refactoring,Resharper,我有一个函数,我想移动到另一个对象。在代码中,我选择要移动的函数。我使用ReSharper>Refactor>Move,但什么也没发生。选项1:剪切和粘贴 这是我在答案中添加的一个新选项。这是迄今为止最简单的 剪切要移动的代码。 将其粘贴到新位置。 将出现一个图标,您可以单击并选择“应用移动重构”。 我不确定这个选项是否总是有效 选项2:添加要作为成员移入的对象 我发现重构>移动只有在对象作为成员时才有效。成员必须是具体类型,而不是接口。比如说, public class MyControlle

我有一个函数,我想移动到另一个对象。在代码中,我选择要移动的函数。我使用ReSharper>Refactor>Move,但什么也没发生。

选项1:剪切和粘贴 这是我在答案中添加的一个新选项。这是迄今为止最简单的

剪切要移动的代码。 将其粘贴到新位置。 将出现一个图标,您可以单击并选择“应用移动重构”。 我不确定这个选项是否总是有效

选项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想要重构为工作代码。要调用moved方法,必须有对该对象的引用。即便如此,RESHARPER可能会考虑在这种情况下不同的UI决策。就像一个信息

选项3:更改方法签名
我在将私有方法移动到静态类时遇到问题。我将方法从private更改为public static,然后可以选择要将其移动到的静态类。

在尝试通过ReSharper重构菜单移动文件时,我也遇到了这个问题。选中该框以启用“撤消”,在“移动”对话框中打开所有更改后的文件进行编辑,解决了此问题。

移动实际上非常有用。对我来说也是如此,它不是working@Luke见下面我的答案。我刚刚添加了一个新选项1,您可以尝试。