如何在源代码中找到具有特定类型参数的泛型调用?

时间:2012-01-30 08:28:24

标签: c# visual-studio-2010 resharper

我有一个通用的方法

public void Foo<T>(T arg) where T : ISomeInterface

这个方法在整个代码中使用了很多,我想找到它的用途,T是一个特定的类型。

我可以通过短信搜索

"Foo<TheType>("

但通常在调用中省略了type参数(推断)。 有什么办法可以在VS2010或ReSharper中找到这些方法调用吗?

6 个答案:

答案 0 :(得分:4)

在下一版ReSharper中,“搜索​​模式”功能将涵盖此功能。 http://youtrack.jetbrains.net/issue/RSRP-288080

答案 1 :(得分:1)

你可能会让编译器使用旧的break-it-and-see-what-not-compile方法来帮助你找到它们:如果有问题的类型T是你自己的代码,请尝试更改它定义,以便它不再实现ISomeInterface。

答案 2 :(得分:0)

通过ildasm运行程序集并搜索相应的方法签名,然后通过反汇编向后工作以获取源文件和行号。

答案 3 :(得分:0)

我尝试使用ReSharper搜索模式(ReSharper-&gt;工具 - &gt; PatternCatalog-&gt;添加模式):

搜索模式:Foo($ arg $)
占位符:arg =表达式,类型为TheType

然后保存并单击“立即搜索”。

答案 4 :(得分:0)

暂时声明非泛型方法并查找其用法。

public void Foo(TheType arg)
{
}

在声明之后,它是首选方法而不是通用方法。

答案 5 :(得分:-1)

正如您所提到的,您可以使用文字搜索“Foo<TheType>(”和“Foo(TheType”来推断