Как я могу найти общие вызовы с определенным аргументом типа в моем источнике? - PullRequest
6 голосов
/ 30 января 2012

У меня есть общий метод

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

Этот метод довольно часто используется в коде, и я хочу выяснить, где он используется, когда T является конкретным типом.

Я могу текстовый поиск для

"Foo<TheType>("

но чаще всего аргумент типа пропускается в вызове (вывод). Есть ли способ найти эти вызовы методов в VS2010 или, возможно, в ReSharper?

Ответы [ 6 ]

4 голосов
/ 30 января 2012

В следующей версии ReSharper это будет охватываться функцией «Поиск по шаблону».http://youtrack.jetbrains.net/issue/RSRP-288080

1 голос
/ 30 января 2012

Возможно, вы могли бы заставить компилятор помочь вам найти их, используя старый подход "разбить его и посмотреть-что-не-компилировать": если рассматриваемый тип T является вашим собственным кодом, попробуйте изменить его определение, так что он больше не реализует ISomeInterface.

0 голосов
/ 23 января 2015

Временно объявите неуниверсальный метод и найдите его использования.

public void Foo(TheType arg)
{
}

После объявления это предпочтительный метод вместо универсального.

0 голосов
/ 06 февраля 2012

Я попробовал следующий шаблон поиска ReSharper (ReSharper-> Инструменты-> PatternCatalog-> Добавить шаблон):

Шаблон поиска: Foo ($ arg $)
Заполнитель: arg = выражение, имеющее типTheType

Затем сохраните его и нажмите «Поиск сейчас».

0 голосов
/ 30 января 2012

Запустите сборку с помощью ildasm и найдите соответствующую сигнатуру метода, затем выполните обратную разборку, чтобы получить исходный файл и номер строки.

0 голосов
/ 30 января 2012

Как вы упомянули, вы можете использовать текстовый поиск для "Foo<TheType>(" и "Foo(TheType", где он выводится

...