Найти все ссылки на детский метод
Я хочу найти все вызовы в ссылках DateTime.ToString
в моей сборке. В Visual Studio вы можете "Найти все ссылки", щелкнув правой кнопкой мыши на ToString
; однако, возвращает все ссылки на ToString
для всех классов, а не только DateTime
.
Обычный поиск DateTime.ToString
не будет работать из-за следующего примера:
DateTime myDate = new DateTime();
myDate.ToString();
Какие-либо предложения?
Ответы
Ответ 1
Для этого вы должны использовать ReSharper.
шаги:
- Загрузите и установите ReSharper (пробная версия будет работать для вас)
- Откройте проект/решение в Visual Studio
- Найти использование ToString(), например
myDate.ToString();
- Щелкните правой кнопкой мыши значок
ToString
- Выберите пункт "
Find Usages Advanced...
- Отметьте соответствующие окна в окне, как показано на скриншоте ниже, и нажмите "
Find
- ПРИБЫЛЬ
Ответ 2
В VS2015, когда вы пытаетесь найти ссылки для метода переопределения, вы их группируете по типу в
Результаты: Результаты поиска символа
Ответ 3
В визуальной студии AFAIK это невозможно, хотя resharper может.
В окне поиска в расширенном режиме вы можете отфильтровать, какой тип вы ищете. Вы можете указать меньше производных или более полученных.
Поэтому в этом случае вы можете отфильтровать только DateTime
или весь ValueType
или System.Object
.
В этом случае я думаю, что визуальная студия не может помочь, но я бы хотел поделиться некоторыми трюками.
Например: Если вы хотите найти все ссылки на событие PropertyChanged
вашего класса Person
предполагается, что пользователь реализует INotifyPropertyChanged
, вы получите множество ссылок, поскольку существует множество классов, которые реализуют INotifyPropertyChanged
.
Что вы можете сделать, так это просто перейти к классу Person
и прокомментировать реализацию интерфейса INotifyPropertyChanged
. Затем найдите все ссылки в visual studio, которые расскажут вам только о ссылках класса Person
. Не все типы.
По крайней мере, я надеюсь, что этот трюк может помочь в каком-то другом месте, если не сейчас.
Ответ 4
Коммерческий инструмент NDepends действительно хорош для этого: он позволяет вам найти, какие сборки/классы/методы используют конкретный.
Это может быть не дешево, но если у вас есть большая база кода -especialy с несколькими assemblies-, это может быть очень эффективно!