Подтвердить что ты не робот

Как вы находите все реализации интерфейса?

Предположим, что у вас есть интерфейс, определенный в С#. Какой самый простой способ найти все классы, обеспечивающие реализацию интерфейса?

Метод грубой силы должен использовать "Найти ссылки" в Visual Studio и вручную просмотреть результаты, чтобы отделить использование от реализаций, но для интерфейса в большой базе кода, на которую в значительной степени ссылаются относительно небольшие реализации, это может занять много времени и подвержено ошибкам.

В Java запуск javadoc на базе кода (с использованием опции -private для включения частных классов) приведет к созданию страницы документации для интерфейса (например, Comparable), который включает в себя все реализующие классы для интерфейса, а также любые подинтерфейсы (хотя он не включает в себя реализации классов подинтерфейсов, их относительно легко определить, свернув вниз в перечисленные подинтерфейсы). Это такая функциональность, которую я ищу, но с С# и Visual Studio.

4b9b3361

Ответ 1

(Изменить на основе комментария...)

Если у вас установлен ReSharper:

В Visual Studio щелкните правой кнопкой мыши имя типа и выберите "Перейти к Inheritor". Кроме того, выберите имя типа, затем перейдите в ReSharper/View/Type Hierarchy, чтобы открыть новую вкладку. (В меню вы увидите комбинацию клавиш - это может меняться, поэтому я объяснил, как ее найти:)

Если у вас нет ReSharper:

  • Вы можете использовать Reflector, который может очень легко показать вам всю иерархию типов - просто под типом имя являются расширяемыми элементами для базовых типов и производных типов. Аналогичные инструменты доступны, например ILSpy и dotPeek.
  • Купить ReSharper - это отличный инструмент:)

Ответ 2

Вы можете щелкнуть имя метода (определение в интерфейсе или реализацию в другом классе) и выбрать "Просмотр иерархии вызовов". В окне "Иерархия вызовов" есть папка "Реализации", где вы можете найти все местоположения реализации метода интерфейса.

Ответ 3

С Visual Studio 2010 +

Щелкните правой кнопкой мыши метод-член и выберите иерархию запросов просмотра. Разверните папку "Реализации". В нем перечислены все типы, реализующие интерфейс, к которому принадлежит метод.

enter image description here

С Resharper 7

Щелкните правой кнопкой мыши по интерфейсу > Перейдите к > Производные символы. Символы, перечисленные в жирный, выводятся непосредственно из интерфейса. Полужирные символы выводятся из суперкласса.

enter image description here

Ответ 4

Поместите курсор в класс или тип интерфейса и

CTRL + F12

Ответ 5

Для тех, кто использует Visual Studio 2015, есть это удивительное расширение, называемое Переход к реализации. Попробуйте.

После того, как вы установили расширение, вы можете просто щелкнуть правой кнопкой мыши на любом вхождении интерфейса (например, IUrlShortener) и щелкнуть по меню Go To Implementation. Если у вас есть только один класс, который реализует интерфейс, щелчок по меню приведет вас непосредственно к классу. Если у вас более одного класса, реализующего интерфейс, он будет перечислять все классы.

Ответ 6

Для тех, кто использует Visual Studio 2015, установите Visual Studio 2015 Update 1 RC. Из Блог Visual Studio:

Сегодня мы выпустили Visual Studio 2015 Update 1 RC, который основывается на обновлении CTP, который мы выпустили три недели назад. В дополнение к функциям, введенным в CTP, как описано здесь, Кандидат на выпуск включает в себя следующее:

  • Перейти к реализации. Функция, которую многие из вас ждут: просто щелкните правой кнопкой мыши по интерфейсу или абстрактному методу и выберите эту команду, чтобы перейти к реализации.

Ответ 7

Я не думаю, что эта функциональность встроена в VS, но IIRC Resharper имеет это.

Ответ 8

Вы можете выполнить поиск регулярного выражения для интерфейса.

:(\ *[^},]+,)*\ *IMyInterfaceName

CTRL + SHIFT + F запускает следующее окно:

Visual Studio Screenshot

Ответ 9

Я предпочитаю вариант "Навигация до...". Наведите курсор на вызов функции, попробуйте следующее:

Быстрая клавиша:

  1. Ctrl+, (Ctrl+ запятая)

Меню:

  1. Редактировать меню
  2. Нажмите "Перейти к..."

Выгоды:

  • Не отображаются все ссылки типа "Найти все ссылки"
  • Показывает "тип" реализации, поэтому он заметит, какой у вас интерфейс

Ответ 10

Используйте Shift + F12, чтобы показать все ссылки, включая определения.

Ответ 11

Если вы используете resharper ALT + END, ярлык может помочь найти все Наследующие.

Ответ 12

Я слышал, сказать (нет опыта сам), что Doxygen для.Net, как Javadoc для Java.