2016-11-25 62 views
0

的反相缺省值,如果我有这样的方法:C#重构:布尔参数

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

是否有任何重构(内置,R#或其他)翻转“标志的该默认值“参数为true,自动修复所有用法(从所有调用”false“的调用中删除”false“,并将”true“添加到其他所有调用中)?

+0

到目前为止,我知道,没有办法做这样的事情。 Visual Studio 2015允许您使用正则表达式进行搜索和替换。但我认为这是危险的,并且会改变更多的代码,然后您会期望。 – Sebi

+0

我可以问你为什么需要改变默认值吗?它只是用于semtantics? –

+0

嘿,当然你可以问。这是一个设计错误的内部API,可以这么说。所以给定的默认值的使用比倒转的情况少得多。我知道可选参数是邪恶的,但如果使用*,它们应该代表最常用的情况,我想。 –

回答

0

我不认为Visual Studio或ReSharper可以反转布尔参数的默认值。

但是,您可以反转该方法中参数的所有用法。 随着ReSharper的你可以按下Ctrl键++[R(或右键单击声明布尔并按Refactor this),然后在菜单中选择Invert Boolean。这将打开一个对话框,让您选择一个新名称,然后ReSharper将颠倒布尔值的所有用法。

Screenshot of the refactor menu.

+0

谢谢,但这不适用于方法参数/参数,是吗?也许我的R#版本太旧了? –

+0

@ Dr.TimdosSantos它至少在最新版ReSharper中运行。我试图找出哪个版本引入了此功能。 –

+0

@ Dr.TimdosSantos对不起,我没有正确阅读这个问题。看来ReSharper不处理参数声明中的默认值。 –