使用Resharpers模式目录查找具有3个以上参数的构造函数

Dan*_*rth 7 .net c# resharper visual-studio-2010 resharper-6.0

是否可以在Resharper的模式目录中创建搜索模式以查找具有3个以上参数的所有构造函数?
如果是这样,怎么样?
我的问题是我不知道如何告诉Resharper只有构造函数定义才能匹配.

Evr*_*glu 4

据我所知,Resharper 中的模式只能在方法内进行匹配。所以你无法匹配构造函数声明。

我只是尝试了以下模式:

new $type$($args$)
Run Code Online (Sandbox Code Playgroud)

其中 type 是类型的占位符(谁能猜到?),args 至少有 3 个参数。这确实找到了至少 3 个参数构造函数的所有使用,但它不会找到未使用的构造函数,最重要的是,它会找到以下内容:

public class MyClass : MyAbstractClass
{
    public MyClass(int foo1, int foo2) : base(foo1, foo2, 0)
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果您认为会遇到这些情况,那么您应该尝试使用正则表达式查找,而不是使用 Resharper 模式。这可能很难,因为想想 C# 语法相当复杂,但你可以得到一些东西......

编辑:我改编了 Visual Studio 正则表达式搜索来查找构造函数声明,识别新行和至少参数(可以有可选值):

^(:b|\n)*((public|internal|private|protected|static|sealed)(:b|\n)+)+:i(:b|\n)*\((:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*)(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))^2(,(:b|\n)*:i(:b|\n)+:i(:b|\n)*(|\=(:b|\n)*:a*(:b|\n)*))*\)
Run Code Online (Sandbox Code Playgroud)

它很难看,主要是因为 VS 自定义正则表达式没有对标准\w{2,}?进行任何翻译。