ReSharper是否具有“将初始化程序移动到构造函数?”的反转?

时间:2014-01-07 13:24:22

标签: c# resharper

ReSharper将提供将字段初始值设定项移动到构造函数:

enter image description here

我正在寻找一种方法来反转过程 - 将初始化从构造函数移动到字段初始化程序。

即,从:

开始
class C
{
    readonly int i;

    public C()
    {
        i = 42;
    }
}

结束于:

class C
{
    readonly int i = 42;

    public C() { }
}

ReSharper支持吗?

2 个答案:

答案 0 :(得分:3)

是的,你可以这样做。

为了从这个起始位置这样做:

class Program
{
        public Program()
        {
           int i = 42;
        }
} 

将光标放在int i = 42;的线上(您可能需要玩一点,我相信只有在我尝试时将光标放在i前面时才有效),转到 Resharper - > Refactor - > 介绍字段

选择字段初始值设定项使字段只读

结果:

class Program
{
        private readonly int _i = 42;

        public Program()
        {
        }
}

可以找到更多信息here

答案 1 :(得分:1)

您可以使用“结构搜索和替换”来执行此操作。

这里是SSR pattern for you

它适用于您的简单示例,但可能需要进行修改以匹配更复杂的案例,甚至可能不支持它们。无论如何玩它。

要导入模板,请转到 ReSharper>管理选项,右键单击现有图层(如果需要,请预先创建新图层),选择从>导入;从网址导入并指定上面的原始网址。

一旦完成,就会出现新的代码检查,并快速修复以将初始化移至该字段。

如有必要,请转到 ReSharper>选项>代码检查>自定义模式可编辑模式或配置检查严重性。