自动重构以向方法调用添加参数名称

Dio*_*o F 18 c# resharper refactoring automated-refactoring visual-studio

我正在进行大规模的重构.

我有很多方法,通过位置参数调用.现在我想通过命名参数调用它们.这些方法存在于几个非继承的类中,并且具有相同的名称,并且它们的签名不同.例:

定义

public class Foo
{
    public static Foo Create(int count, string name)
    {
        ...
    }
}

public class Bar
{
    public static Bar Create(string description, bool yesNo, float factor)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我想要替换的电话

public void CreateSomeObjects()
{
    var foo = Foo.Create(123, "foo");
    var bar = Bar.Create("bar", true, 1.23);
}
Run Code Online (Sandbox Code Playgroud)

public void CreateSomeObjects()
{
    var foo = Foo.Create(count: 123, name: "foo");
    var bar = Bar.Create(description: "bar", yesNo: true, factor: 1.23);
}
Run Code Online (Sandbox Code Playgroud)

我使用Visual Studio Premium 2013和Resharper.任何想法如何实现这一目标?(我只需要一个提示,没有完整的解决方案.)

cod*_*rsl 12

不确定这是多么实用,但您可以使用ReSharper执行以下操作:

  1. 使用"查找用法"获取所有方法调用位置的列表.
  2. 对于每种用法,双击以转到该方法.
  3. 然后在代码编辑器中,单击参数值,ReSharper应显示其动作指示器(左边距中的灯泡或锤子).
  4. 单击操作指示器以显示操作上下文菜单.
  5. 选择"添加参数名称"操作以将参数名称添加到所有参数.
  6. 重复.

  • 这听起来比听起来容易得多.我只是将命名参数的级别调高为警告,然后在每个函数的第一个参数上,点击ctl +.,输入,它就完成了. (2认同)

Mar*_*ell 7

在提出这个问题多年后,我在谷歌搜索时发现了它(因为我处于同样的情况)。

我无法访问 ReSharper,但对我来说,出色的Roslynator是解决方案。

您可以通过 VS2017/2019扩展和更新对话框(搜索“Roslynator”)或通过VS Marketplace安装它。还有一个版本只包含 refactorings,如果由于某种原因你不想安装分析器。

安装扩展并重新启动 Visual Studio 后,您可以右键单击任何方法的第一个参数并选择Quick Actions and Refactorings...,然后单击添加参数名称 'XXX'(包括尾随参数)以添加到名称(见下面的屏幕截图)。

快速操作和重构

添加参数名称

它不是完全自动化的(虽然我认为它是基于 Roslyn 的),但我已经用它节省了很多时间。