【问题标题】:Automated refactoring: Add an argument to all method invocations自动重构:为所有方法调用添加参数
【发布时间】:2014-05-09 10:02:53
【问题描述】:

因此,在我的 ASP.NET C# 代码库中,我可能有数百位这样的代码:

Response.Redirect("something.aspx?Error=" + ex.Message);

我想自动为所有这些方法调用添加一个参数,以将“true”作为该方法的第二个参数添加,如下所示:

Response.Redirect("sometihng.aspx?Error=" + ex.Message, true);

我可以使用 Visual Studio 2010 和最新版本的 Resharper。

我尝试使用 Resharper 中的“使用模式搜索”功能(VS 菜单 -> ReSharper -> 查找 -> 使用模式搜索)来查看这是否会自动重构我的代码库,但我不确定具体如何或是否有用。这是我尝试过的:

在右侧,我创建了一个名为“anyString”的“Argument”占位符,希望它可以找到并替换所有在第一个参数中包含字符串的 Response.Redirect 调用,但这发现没有在我的代码库中匹配。

关于如何在不诉诸手动更改所有引用的情况下解决此问题的任何想法?

【问题讨论】:

    标签: c# resharper automated-refactoring


    【解决方案1】:

    根据 Jetbrains Resharper 关于“Searching a Code with Pattern”的文档:

    注意,当你使用占位符时,它的名字应该是 用美元符号括起来(使用语法 $xx$,其中 xx 代表 占位符名称),而当您创建一个新的占位符时,您 应该省略这些特殊符号。

    因此,我走在了正确的轨道上。同样对于占位符,我只需要'$anyString$',它会找到该方法的所有调用,即使它们由多个字符串对象(例如字符串文字和字符串对象)组成。所以这就是它的样子:

    “anyString”占位符模式是通过执行以下步骤创建的:

    1) 点击“添加占位符”-> 参数

    2) 给它一个名字,例如'任意字符串'

    对于我的情况,我还检查了“限制最小参数数量”并选择了 1,我还检查了“最大”框并将其也设置为 1。

    如果您打算再次重复使用该模式,“保存”按钮也很有用。

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 2020-08-26
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2013-04-26
      • 2023-03-06
      相关资源
      最近更新 更多