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

时间:2014-09-04 07:07:56

标签: c# visual-studio refactoring resharper automated-refactoring

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

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

解释

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

public class Bar
{
    public static Bar Create(string description, bool yesNo, float factor)
    {
        ...
    }
}

以下是我想要替换的电话,来自

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

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

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

2 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:1)

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

我没有使用ReSharper的权限,但是对我来说,出色的Roslynator是解决方案。

您可以通过VS2017 / 2019 扩展和更新对话框(搜索“ Roslynator”)或通过VS Marketplace进行安装。如果由于某些原因您不希望安装分析仪,则还有a version which only contains the refactorings

安装扩展并重新启动Visual Studio之后,可以右键单击任何方法的第一个参数,然后选择快速操作和重构... ,然后单击添加参数名称“ XXX”(包括尾随参数)以添加名称(请参见下面的屏幕抓图)。

Quick Actions and Refactorings

Add argument name

它不是完全自动化的(尽管我想它可能是基于罗斯林的),但是我已经用它节省了很多的时间。