15

Ich bin mitten in einem großen Refactoring.Automatisches Refactoring zum Hinzufügen von Parameternamen zu Methodenaufrufen

Ich habe Dutzende von Methoden, die über Positionsparameter aufgerufen werden. Jetzt möchte ich sie über benannte Parameter aufrufen lassen. Die Methoden existieren in mehreren, nicht vererbten Klassen und haben denselben Namen und ihre Signaturen unterscheiden sich. Beispiel:

Definitionen

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

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

Und die folgenden Anrufe I, von

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

zu

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

Ich benutze Visual Studio Premium-2013 und ReSharper ersetzen möchten . Irgendwelche Ideen, wie man das erreicht? (Ich brauche nur einen Hinweis, keine vollständige Lösung.)

+1

Haben Sie eine Lösung gefunden? Vielen Dank ... – ManOnAMission

+0

Leider nicht. Mein aktueller Ansatz ist es, dies mit [Roslyn] (https://github.com/dotnet/roslyn) umzuschreiben. Da ich gerade am Anfang bin, werde ich keinen Code für jetzt veröffentlichen. –

+0

CodeRush scheint in der Lage zu sein, benannte Parameter einzufügen (es ist ein Kontextmenü, das Sie manuell anklicken müssen, also keine automatisierte Lösung). – ManOnAMission

Antwort

10

Nicht sicher, wie praktisch das ist, aber Sie können die folgenden mit ReSharper tun:

  1. „Suche nach Nutzungen“ eine Liste aller Methodenaufruf zu erhalten Standorte.
  2. Doppelklicken Sie für jede Verwendung, um zur Methode zu gelangen.
  3. Klicken Sie dann im Code-Editor auf einen Parameterwert und ReSharper sollte seinen Aktionsindikator anzeigen (eine Glühbirne oder ein Hammer am linken Rand).
  4. Klicken Sie auf den Aktionsindikator, um das Aktionskontextmenü anzuzeigen.
  5. Wählen Sie die Aktion "Argumentnamen hinzufügen", um allen Parametern Parameternamen hinzuzufügen.
  6. Wiederholen.
+2

Das ist viel einfacher als es klingt. Ich habe gerade die Ebene auf benannte Argumente zur Warnung hochgedreht, dann auf das erste Argument jeder Funktion, drücke Strg +., Enter, und es ist fertig. – fastmultiplication