Wie zeige ich in Visual Studio alle Klassen an, die von einer Basisklasse geerbt wurden?
Zum Beispiel , in ASP.NET MVC gibt es mehrere ‚ Action ‘ Typen - und sie alle vererben / implementieren , um die Basisklasse ActionResult
.
Es sieht so aus, als ob Sie diese Informationen nicht einfach herausfinden können, es sei denn, Sie wissen das nur View
und Json
sind gültige ActionResult
Typen.
Bitte beweise mir das Gegenteil.
Gibt es etwas im Objektbrowser, das es einfach macht, dies herauszufinden?
Ich bin sogar bereit, Vorschläge für Tools außerhalb von Visual Studio zu machen, um diese Informationen zu verschiedenen Klassen zu erhalten. Zum Beispiel: Gibt es etwas in Resharper, das mir helfen wird?
visual-studio
class
abstract-class
Dan Esparza
quelle
quelle
Antworten:
Sicher, Resharper kann das. Und vieles mehr.
Klicken Sie einfach mit der rechten Maustaste auf den Typnamen an einer beliebigen Stelle und wählen Sie im Kontextmenü "Gehe zu Vererbung". "Gehe zu Vererbung" kann auch auf die Methode zum Navigieren zu Überschreibungen und die Implementierungen einer Schnittstellenmethode angewendet werden. Für eine Benutzeroberfläche können Sie erneut "Find Usages Advanced" aufrufen (klicken Sie einfach mit der rechten Maustaste), um alle Erweiterungen und Implementierungen zu finden. Für einen vom Typ abgeleiteten Typ. Und meine Lieblingsfunktion - klicken Sie mit gedrückter Strg-Taste auf einen beliebigen Typ / eine beliebige Methode, um zu seiner Deklaration zu navigieren.
Ich denke, es ist ein Muss für .net-Entwickler.
Klicken Sie in Resharper 9.2 bei einem beliebigen Quellcode-Typ mit der rechten Maustaste auf "Find Usage Advanced", wählen Sie Find = "Derived" und Scope = "Solutions and Libraries".
Um beispielsweise alle Erben (sowohl in der Bibliothek als auch in Ihrem Code) einer Basisklasse in einer enthaltenen DLL eines beliebigen Anbieters zu finden, deklarieren Sie eine Variable in Ihrem Code mit dieser Basisklasse. Klicken Sie dann mit der rechten Maustaste auf den Namen der Basisklasse, den Sie gerade eingegeben haben.
quelle
Für VS2012
quelle
Hierfür benötigen Sie nicht unbedingt Reflector. In der Ansicht "Klassendiagramm" von Visual Studio können Sie problemlos alle abgeleiteten Klassen für eine bestimmte Klasse finden. Klicken Sie mit der rechten Maustaste auf die Klasse in "Klassenansicht" und wählen Sie "Klassendiagramm anzeigen". Wenn das Diagramm nicht den gewünschten Detaillierungsgrad für die Hierarchie anzeigt, klicken Sie mit der rechten Maustaste auf das Feld für die Klasse im Diagramm und wählen Sie "Abgeleitete Klassen anzeigen".
Möglicherweise nicht so direkt wie Resharper, aber es ist eine Option, wenn Sie noch kein R # haben.
Leider bin ich mir nicht sicher, welche bestimmten Versionen von Visual Studio es haben.
quelle
Dies ist die am wenigsten faule Antwort (ich bin nur stolz auf diese Antwort :)
Ich habe ReSharper nicht, habe es schon einmal versucht, wollte es aber nicht kaufen. Ich habe ein Klassendiagramm ausprobiert, aber es ist überhaupt nicht praktikabel, da das Hierarchiediagramm die Welt dreimal überspannt und der Bildschirm meines Laptops nicht unendlich breit ist. Meine natürliche und einfache Lösung bestand darin, Windows Forms-Code zu schreiben, um die Typen in einer Assembly zu durchlaufen und mithilfe der Reflektion Knoten zu einer Baumansicht hinzuzufügen:
Bitte nehmen Sie an, dass Sie ein Textfeld, eine Baumansicht und andere Dinge haben, die in einem Formular benötigt werden, in dem dieser Code ausgeführt wird
quelle
AppDomain.CurrentDomain.GetAssemblies()
? Schauen Sie sich das an: stackoverflow.com/questions/851248/…Ab 'Visual Studio 2015 Update 1' können Sie einfach mit der rechten Maustaste auf einen Klassennamen im Klassencode-Editor klicken und dann im Kontextmenü die Option 'Gehe zur Implementierung' auswählen: Strg + F12 ist die Verknüpfung.
Weitere Informationen finden Sie unter https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ .
quelle
Niemand hat dies bisher erwähnt, also werde ich es hinzufügen.
Jetbrains dotPeek ist ein kostenloser .NET-Dekompiler, mit dem diese Informationen einfach angezeigt werden können.
Kostenloser Download: http://www.jetbrains.com/decompiler/
Jetbrains ist das Unternehmen, das Resharper herstellt.
Schritte zum Finden abgeleiteter Klassen:
ActionResult
ActionResult
Klicken Sie in der Klassendeklaration mit der rechten Maustaste und wählen Sie "Abgeleitete Symbole".quelle
Angenommen, Sie haben Resharper installiert: Klicken Sie mit dem Cursor auf die Klasse / Schnittstelle mit der rechten Maustaste auf - Inspizieren - Hierarchien
Dies zeigt Unterklassen, Implementierungen und Oberklassen.
quelle
Navigieren Sie in der Visual Studio-Klassenansicht zu der gewünschten Klasse und suchen Sie deren Basis- und abgeleitete Klassen
quelle
Sie können auch Reflector verwenden .
Laden Sie alle Assemblys, in denen sie angezeigt werden sollen, navigieren Sie zu einem Typ und erweitern Sie das Element Abgeleitete Typen.
Sie können dies auch im Objektbrowser tun, aber aus irgendeinem Grund kann VS2008 dies nur in einer der .NET Framework-Ansichten tun. (VS2010 Beta 2 kann dies in jeder Ansicht tun)
quelle
Für Framework-Klassen verwende ich die MSDN-Bibliothek. Der Abschnitt Vererbungshierarchie geht in beide Richtungen. Zugegebenermaßen nicht viel Hilfe für einige 3D-Party-Bibliotheken.
quelle
Mit Hilfe von ReSharper (Version 2016.1.2) nur Ctrl+ Alt+ Clickauf die Basisklasse . Sie werden so etwas sehen:
quelle
Ziehen Sie die Klasse oder den Namespace aus dem Objekt-Explorer in die Class Digram- Datei.
Wie bekomme ich ein schönes Klassendiagramm für integrierte .net-Klassen?
quelle
Wählen Sie den Typ aus und klicken Sie mit der rechten Maustaste, um etwas anzuzeigen --- auf der Codekarte anzeigen - Option Wählen Sie es aus, um das Bildformat für diejenigen zu generieren, die diesen Typ erben
quelle
Als Option für Benutzer von Visual Assist können Sie auch Umschalt + ALT + G drücken (während sich das Caret im Klassennamen befindet), um das Kontextmenü "Springen" aufzurufen. Wenn abgeleitete Klassen vorhanden sind, wird ein Untermenü angezeigt dafür listet das sie alle auf und zeigt sogar Vererbungsstrukturen unter diesen abgeleiteten Klassen.
quelle
Codiere es einfach.
quelle
Wenn Sie auf VS2012 aktualisiert haben, können Sie die "Code Map" verwenden.
Klicken Sie mit der rechten Maustaste auf den Typ, dessen Vererbungshierarchie Sie anzeigen möchten, und wählen Sie "Zur Codezuordnung hinzufügen". Anschließend können Sie in der Codezuordnungsansicht Knoten erweitern und mit der rechten Maustaste "Abgeleitete Klassen / Basisklassen anzeigen" auswählen. Leider funktioniert es nicht für die von .NET bereitgestellten Klassen.
quelle
Für Visual Studio 2012 ( ohne ReSharper )
quelle
Update 2020:
Sie können die Code Maps von Visual Studio verwenden, was ziemlich gut funktioniert.
Klicken Sie einfach rechts auf die Klasse und navigieren Sie zu:
Code Map
>Show Related Items on Code Map
>Show All Derived Types
Hinweis:
PS Es lohnt sich wirklich, die Enterprise-Version (oder zumindest die Vorschau-Version davon) auf Ihrem Computer zu behalten, da sie eine Reihe wirklich nützlicher Tools enthält , die in den anderen Editionen nicht enthalten sind.
quelle
ActionResult
(das Beispiel des OP)Eine sehr einfache Möglichkeit, dies zu tun, besteht darin,
: Classname
im Fenster "Suchen und Ersetzen" (STRG + F) nach zu suchen und die Option "Optionen suchen / Ganzes Wort abgleichen" zu verwenden. Sie finden nur die geerbten Klassen.quelle
class DDerived : IInterface, BBase