2016-11-25 2 views
0

wenn ich ein Verfahren wie dieses:C# Umgestalten: Invertierung Standardwert von Booleschen Parameter

public void Foo(object arg1, object arg2, bool flag = false); 

Gibt es eine refactoring (eingebaute, R # oder andere), der Standardwert des „Flag Flip "parameter to true, alle Verwendungen automatisch fixierend (das" false "von allen Aufrufen entfernen, die mit" false "aufrufen, und" wahr "zu allen anderen hinzufügen)?

+0

Bisher weiß ich, gibt es keine Möglichkeit, so etwas zu tun. In Visual Studio 2015 können Sie nach Regex suchen und diese ersetzen. Aber ich denke, das ist gefährlich und wird viel mehr Code ändern, als man erwarten würde. – Sebi

+0

Kann ich fragen, warum Sie den Standardwert ändern müssen? Ist es nur für Semantik? –

+0

Hey, natürlich kannst du fragen. Es ist eine interne API, die sozusagen falsch herum entworfen wurde. Daher wird der angegebene Standardwert in weit weniger Fällen als im umgekehrten Fall verwendet. Ich weiß, optionale Parameter sind böse, aber * wenn * verwendet, sollten sie den am häufigsten verwendeten Fall darstellen, denke ich. –

Antwort

0

Ich glaube nicht, dass Visual Studio noch ReSharper den Standardwert eines booleschen Parameters invertieren kann.

Sie können jedoch alle Verwendungen des Parameters innerhalb der Methode invertieren. Mit ReSharper können Sie Ctrl +Umschalt +R (oder Rechtsklick auf den deklarierten boolean und Refactor this drücken) drücken, und dann Invert Boolean im Menü auswählen. Dies öffnet einen Dialog, in dem Sie einen neuen Namen auswählen können. ReSharper wird dann alle Verwendungen des booleschen Wertes invertieren.

Screenshot of the refactor menu.

+0

Danke, aber das funktioniert nicht für Methodenparameter/Argumente, oder? Vielleicht ist meine R # Version zu alt? –

+0

@ Dr.TimdosSantos Es funktioniert in der neuesten Version mindestens ReSharper. Ich versuche herauszufinden, welche Version diese Funktion eingeführt hat. –

+0

@ Dr.TimdosSantos Sorry, ich habe die Frage nicht richtig gelesen. Scheinbar behandelt ReSharper den Standardwert in der Parameterdeklaration nicht. –

Verwandte Themen