15

我正处于大型重构的中间。为方法调用添加参数名称的自动重构

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

定义

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高级专业版2013和ReSharper的。任何想法如何实现这一目标? (我只需要一个提示,没有完整的解决方案。)

+1

您是否找到解决方案?非常感谢... – ManOnAMission 2015-01-20 07:12:43

+0

不幸的是没有。我目前的做法是用[Roslyn](https://github.com/dotnet/roslyn)重写这个。由于我刚刚开始,我现在不会发布代码。 – 2015-01-22 09:42:01

+0

CodeRush似乎能够插入命名参数(这是您手动需要点击的上下文菜单,因此没有自动化解决方案)。 – ManOnAMission 2015-01-22 12:18:17

回答

10

不知道如何实践这个,但你可以执行以下操作使用ReSharper的:

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

这比听起来容易很多。我只是将名为参数的级别调高到警告级别,然后在每个函数的第一个参数上点击ctl +。,输入完成。 – fastmultiplication 2016-08-17 23:34:35

相关问题