W programie Visual Studio, jak wyświetlić wszystkie klasy dziedziczone z klasy bazowej?
Na przykład w ASP.NET MVC istnieje kilka typów „ ActionResult ” - i wszystkie one dziedziczą z / implementują klasę bazową ActionResult
.
Wygląda na to, że jeśli nie „wiesz” tego View
i nie Json
są to prawidłowe ActionResult
typy, nie ma sposobu, aby łatwo znaleźć te informacje.
Proszę udowodnij mi, że się mylę.
Czy jest coś w przeglądarce obiektów, co sprawia, że łatwo to sprawdzić?
Jestem nawet gotowy na sugestie dotyczące narzędzi spoza Visual Studio, aby odkryć te informacje o różnych klasach. Na przykład: czy jest coś w Resharper, co mi pomoże?
visual-studio
class
abstract-class
Dan Esparza
źródło
źródło
Odpowiedzi:
Jasne, Resharper może to zrobić. I wiele więcej.
Wystarczy kliknąć prawym przyciskiem myszy nazwę typu w dowolnym miejscu i wybrać „Przejdź do dziedziczenia” z menu kontekstowego. „Idź do dziedziczenia” można również zastosować do metody nawigacji po przesłonięciach i implementacji metod interfejsu. W przypadku interfejsu możesz ponownie wywołać „Znajdź zastosowania zaawansowane”, klikając prawym przyciskiem myszy), gdzie można znaleźć wszystkie rozszerzenia i implementacje. Dla typów pochodnych typu. I moja ulubiona funkcja - kliknij z przytrzymaniem Control na dowolnym typie / metodzie, aby przejść do jego deklaracji.
Myślę, że to niezbędne narzędzie dla programistów .net.
W Resharper 9.2, dla dowolnego typu kodu źródłowego, kliknij prawym przyciskiem myszy „Znajdź użycie zaawansowane”, wybierz Znajdź = „Pochodne” i Zakres = „Rozwiązania i biblioteki”.
Na przykład, aby znaleźć wszystkie elementy dziedziczące (zarówno w bibliotece, jak i kodzie) jakiejś klasy bazowej w dołączonej bibliotece DLL od dowolnego dostawcy, zadeklaruj zmienną w kodzie z tą klasą bazową. Następnie kliknij prawym przyciskiem myszy właśnie wpisaną nazwę klasy bazowej.
źródło
Dla VS2012,
źródło
Niekoniecznie potrzebujesz do tego reflektora - widok „Diagram klas” w programie Visual Studio pozwoli Ci łatwo znaleźć wszystkie klasy pochodne dla określonej klasy. Kliknij prawym przyciskiem myszy klasę w „Widok klas” i wybierz „Wyświetl diagram klas”. Jeśli diagram nie pokazuje poziomu szczegółowości, jaki chcesz uzyskać dla hierarchii, kliknij prawym przyciskiem myszy pole klasy na diagramie i wybierz „Pokaż klasy pochodne”.
Może nie być tak bezpośredni jak Resharper, ale jest to opcja, jeśli nie masz jeszcze R #.
Niestety nie jestem pewien, które wersje Visual Studio go zawierają.
źródło
To najmniej leniwa odpowiedź (jestem po prostu dumny z tej odpowiedzi :)
Nie mam ReSharper, próbowałem go wcześniej, ale nie chciałem go kupić. Wypróbowałem diagram klas, ale nie jest to w ogóle praktyczne, ponieważ diagram hierarchii obejmuje świat 3 razy, a ekran mojego laptopa nie ma nieskończonej szerokości. Więc moim naturalnym i łatwym rozwiązaniem było napisanie kodu Windows Forms, aby iterować po typach w zestawie i użyć odbicia, aby dodać węzły do widoku drzewa, w następujący sposób:
proszę załóżmy, że masz pole tekstowe, widok drzewa i inne rzeczy potrzebne w formularzu, w którym działa ten kod
źródło
AppDomain.CurrentDomain.GetAssemblies()
? Spójrz na to: stackoverflow.com/questions/851248/…Zaczynając od „Visual Studio 2015 Update 1”, możesz po prostu kliknąć prawym przyciskiem myszy nazwę klasy w edytorze kodu klasy, a następnie wybrać „Przejdź do implementacji” z menu kontekstowego: ze skrótem Ctrl + F12.
Więcej informacji można znaleźć pod adresem https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ .
źródło
Nikt jeszcze o tym nie wspomniał, więc dodam to.
Jetbrains dotPeek to darmowy dekompilator .NET, który umożliwia łatwe wyświetlanie tych informacji.
Bezpłatne pobieranie: http://www.jetbrains.com/decompiler/
Jetbrains to firma, która produkuje Resharper.
Kroki do znalezienia klas pochodnych:
ActionResult
ActionResult
deklaracji klasy kliknij prawym przyciskiem myszy i wybierz opcję „Symbole pochodne”źródło
Zakładając, że masz zainstalowany Resharper : z kursorem na klasie / interfejsie kliknij prawym przyciskiem myszy - Sprawdź - Hierarchie
To pokazuje podklasy, implementacje i nadklasy.
źródło
W widoku klas programu Visual Studio przejdź do klasy, która Cię interesuje, i znajdź jej klasy podstawowe i pochodne
źródło
Możesz także użyć Reflectora .
Załaduj wszystkie zespoły, w których ma wyglądać, przejdź do typu i rozwiń element Typy pochodne.
Możesz to również zrobić w przeglądarce obiektów, ale z jakiegoś powodu VS2008 może to zrobić tylko w jednym z widoków .Net Framework. (VS2010 Beta 2 może to zrobić w dowolnym widoku)
źródło
W przypadku klas Framework używam biblioteki MSDN. Sekcja Hierarchia dziedziczenia działa w obu kierunkach. Wprawdzie niewiele pomaga dla niektórych bibliotek imprezowych 3D.
źródło
Z pomocą ReSharper (wersja 02.01.2016) tylko Ctrl+ Alt+ Clickw klasie bazowej. Zobaczysz coś takiego:
źródło
Przeciągnij klasę lub przestrzeń nazw z Object Explorer do pliku Class Digram .
Jak uzyskać ładny diagram klas dla wbudowanych klas .net?
źródło
wybierz typ i kliknij prawym przyciskiem myszy zobacz coś --- pokaż na mapie kodu --opcja wybierz to generuj zestaw obrazów dla tych, którzy dziedziczą ten typ jako bardzo ładny obrazek jak format pliku .dgml daje dużo więcej informacji o typie
źródło
Jako opcję dla osób używających Visual Assist, możesz także nacisnąć Shift + ALT + G (gdy kursor znajduje się na nazwie klasy), aby wywołać menu kontekstowe „Przejdź do powiązanych”, a jeśli istnieją klasy pochodne, pojawi się podmenu w tym celu wymienia je wszystkie, a nawet pokazuje struktury dziedziczenia wśród tych klas pochodnych.
źródło
Po prostu zakoduj to.
źródło
jeśli dokonałeś aktualizacji do VS2012, możesz użyć „mapy kodu”.
Kliknij prawym przyciskiem myszy typ, dla którego chcesz wyświetlić hierarchię dziedziczenia, i wybierz opcję „Dodaj do mapy kodu”. Następnie w widoku mapy kodu można rozwinąć węzły i kliknąć prawym przyciskiem myszy, aby wybrać opcję „Pokaż klasy pochodne / podstawowe”. Niestety nie działa to w przypadku klas udostępnionych .NET.
źródło
Dla programu Visual Studio 2012 ( bez ReSharper )
źródło
Aktualizacja 2020:
Możesz użyć map kodu programu Visual Studio, które działają całkiem dobrze.
Wystarczy kliknąć prawym przyciskiem myszy na klasę i przejdź do:
Code Map
>Show Related Items on Code Map
>Show All Derived Types
Uwaga:
PS Naprawdę warto zachować wersję Enterprise (lub przynajmniej jej wersję Preview) na swoim komputerze, ponieważ zawiera ona kilka naprawdę przydatnych narzędzi , których nie ma w innych wydaniach.
źródło
ActionResult
(przykład OP)Bardzo prostym sposobem na to jest wyszukanie
: Classname
w oknie „Znajdź i zamień” (CTRL + F) i użycie opcji „Znajdź opcje / Dopasuj całe słowo”. Znajdziesz tylko odziedziczone klasy.źródło
class DDerived : IInterface, BBase