I am in the middle of a big refactoring.
I have dozens of methods, which are called via positional parameters. Now I would like to have them called via named parameters. The methods exist in several, non-inherited classes and have the same name and their signatures differ. Example:
Definitions
public class Foo
{
public static Foo Create(int count, string name)
{
...
}
}
public class Bar
{
public static Bar Create(string description, bool yesNo, float factor)
{
...
}
}
And the following calls I would like to replace, from
public void CreateSomeObjects()
{
var foo = Foo.Create(123, "foo");
var bar = Bar.Create("bar", true, 1.23);
}
to
public void CreateSomeObjects()
{
var foo = Foo.Create(count: 123, name: "foo");
var bar = Bar.Create(description: "bar", yesNo: true, factor: 1.23);
}
I use Visual Studio Premium 2013 and Resharper. Any ideas how to achieve this? (I just need a hint, no complete solution.)
Not sure how practical this is but you can do the following using ReSharper:
Years after this question was asked, I found it while Googling (as I'm in the same situation).
I don't have access to ReSharper, but for me, the excellent Roslynator was the solution.
You can install it through the VS2017/2019 Extensions and Updates dialog (search for "Roslynator"), or through the VS Marketplace. There is also a version which only contains the refactorings, if for some reason you don't want the analysers installed.
Once you've installed the extension and restarted Visual Studio, you can right-click the first parameter of any method and select Quick Actions and Refactorings..., then click Add argument name 'XXX' (including trailing arguments) to add in the names (see screen grabs below).
It's not completely automated (although being Roslyn-based I presume it could be), but I've already saved a lot of time with it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With