Visual Studio: как показать все классы, унаследованные от базового класса? - PullRequest
122 голосов
/ 12 ноября 2008

Как в Visual Studio показать все классы, унаследованные от базового класса?

Например, , в ASP.NET MVC есть несколько типов ' ActionResult ' - и все они наследуются от / реализуют базовый класс ActionResult.

Похоже, если вы просто не «знаете», что View и Json являются действительными ActionResult типами, вы не сможете легко найти эту информацию.

Пожалуйста, докажите, что я не прав.

Есть ли в браузере объектов что-то, что позволяет легко это выяснить?

Я даже собираюсь предложить инструменты за пределами Visual Studio, чтобы узнать эту информацию о различных классах. Например: есть ли в Resharper что-нибудь, что поможет мне?

Ответы [ 18 ]

4 голосов
/ 12 ноября 2008

Для классов Framework я использую библиотеку MSDN. Раздел «Иерархия наследования» идет в обоих направлениях. Правда, для некоторых библиотек сторонних разработчиков это не сильно помогает.

3 голосов
/ 28 декабря 2011

Перетащите класс или пространство имен из Обозреватель объектов в Класс Digram файл.

Как получить хорошую диаграмму классов для встроенных классов .net?

1 голос
/ 08 января 2015

выберите тип и щелкните правой кнопкой мыши, чтобы увидеть что-то --- показать на карте кода - опция выберите, чтобы генерировать формат изображения для тех, кто наследует этот тип как очень хорошее изображение, так как формат файла .dgml дает гораздо больше информации о типе 1001 *

0 голосов
/ 30 апреля 2015

Очень простой способ сделать это - найти : Classname в «Окне поиска и замены» (CTRL + F) и использовать опцию «Найти параметры / Совпадение всего слова». Вы найдете только унаследованные классы.

0 голосов
/ 18 сентября 2013

Для Visual Studio 2012 ( Без ReSharper )

  1. В обозревателе решений щелкните правой кнопкой мыши класс (чьи производные классы вы хотите увидеть).
  2. На диаграмме классов щелкните правой кнопкой мыши класс и выберите «Показать производные классы».
0 голосов
/ 08 августа 2012

Просто закодируйте его.

Assembly asm = Assembly.LoadFrom(PATH_TO_PROJECT_OUTPUT);

var types = from t in asm.GetTypes()
            where t.BaseType != null && t.BaseType.ToString() == "System.Web.UI.Page"
            // if you want to add reference - where typeof (System.Web.UI.Page).Equals(t.BaseType) 
            select t;

foreach (var type in types)
{
    Console.WriteLine(type);
}
0 голосов
/ 13 февраля 2018

В качестве опции для тех, кто использует Visual Assist, вы также можете нажать Shift + ALT + G (пока курсор находится на имени класса), чтобы вызвать контекстное меню «Перейти к связанному», и если есть производные классы, вы будете получить подменю для этого, которое перечисляет их все и даже показывает структуры наследования среди этих производных классов.

0 голосов
/ 22 февраля 2013

Если вы обновились до VS2012, вы можете использовать «Кодовую карту».
Щелкните правой кнопкой мыши тип, для которого вы хотите просмотреть иерархию наследования, и выберите «Добавить в карту кодов». Затем в представлении карты кода вы можете развернуть узлы и щелкнуть правой кнопкой мыши, чтобы выбрать «Показать производные / базовые классы». К сожалению, он не работает для классов .NET.

...