ReSharper自定义模式表达式类型的变量,但不是文字类型

时间:2014-08-22 21:11:32

标签: resharper

我正在ReSharper中开发一些自定义模式以使事情变得更容易,而且我遇到了一些障碍。

我的一个模式是,我想在用于测试相等性时替换string.Compare的任何实例,并将其替换为string.Equals。乍一看这很容易。

我创建了一个模式:

string.Compare($STRING1$, $STRING2$, $STRINGCOMPAREOPTIONS$) == 0

这里,$ STRINGCOMPAREOPTIONS $是StringComparison类型的表达式。这句话非常适合这种情况:

if(string.Compare("Foo", "Bar", StringComparison.Ordinal) == 0)

当然,我的替换模式也很简单:

 string.Equals($STRING1$, $STRING2$, $STRINGCOMPAREOPTIONS$)

现在,我需要使用非文化版本的情况。这个看起来像这样:

if (string.Compare("Foo", "Bar", true) == 0)

现在,在这里,ReSharper已经有一个内置的检查器将它转换为使用StringComparison运算符,但问题是我必须进行第二次转换才能使用Equals ..我宁愿写一个一步完成转换。

我显然可以像这样编写单独的真假版本:

string.Compare($STRING1$, $STRING2$, true) == 0

string.Equals($STRING1$, $STRING2$, StringComparison.OrdinalIgnoreCase)

但是,这并没有考虑到有人写这样的事情的情况:

string.Compare($STRING1$, $STRING2$, someVariable) == 0

所以,我需要的是一个类型为bool的表达式,但不是文字的真或假,因此我可以创建一个添加条件的版本。

关于我如何能够创建一个类型但不属于文字类型的模式的任何想法?

0 个答案:

没有答案