如何使用Resharper结构查找和替换将C#对象初始值设定项转换为使用构造函数

时间:2015-04-16 14:42:19

标签: c# resharper structural-search

我想使用Resharper结构搜索和替换模板来自动替换此示例:

new Fruit { Name = "Apple", IsTasty = true }

有了这个:

new Fruit("Apple", true)

(注意,所需的构造函数已经存在)

我尝试过各种各样的组合:

new $type$ { Name = $name$, IsTasty = $isTasty$ };

...使用各种不同的占位符类型,但R#在我的代码中找不到任何示例。有人曾经这样做过吗?

2 个答案:

答案 0 :(得分:6)

所以我只是在resharper中做到了这一点(我认为是9.0.2)

创建模式:FruityChange

  • new $ type $ {Name = $ param1 $,IsTasty = $ param2 $}
  • $ type $是一种类型
  • $ param1 $是string
  • 类型的表达式
  • $ param2 $是bool类型的表达式
  • 模式严重性“显示为错误”

与课程水果

public class Fruit
{
    public Fruit(string name, bool isTasty)
    {
        Name = name;
        IsTasty = isTasty;
    }

    public string Name { get; set; }
    public bool IsTasty { get; set; }
}

并且在代码编辑器中强调了表达式,并且alt-tab为我提供了“替换为”选项。它至少适用于我的机器: - )

答案 1 :(得分:2)

默认情况下,R#似乎将占位符视为标识符,模式匹配失败。

双击右侧的每个占位符,并将“标识符”更改为“表达式”。

enter image description here