Dans Visual Studio, comment afficher toutes les classes héritées d'une classe de base?
Par exemple , dans ASP.NET MVC, il existe plusieurs types « ActionResult » - et ils héritent tous de / implémentent la classe de base ActionResult
.
Il semble qu'à moins que vous ne le «sachiez» simplement View
et que vous Json
soyez des ActionResult
types valides , il n'y a aucun moyen de trouver facilement ces informations.
Veuillez me prouver le contraire.
Y a-t-il quelque chose dans le navigateur d'objets qui rend cela facile à découvrir?
Je suis même prêt à recevoir des suggestions d'outils en dehors de Visual Studio pour découvrir ces informations sur différentes classes. Par exemple: y a-t-il quelque chose dans Resharper qui m'aidera?
visual-studio
class
abstract-class
Dan Esparza
la source
la source
Réponses:
Bien sûr, Resharper peut le faire. Et beaucoup plus.
Faites un clic droit sur le nom du type à n'importe quel endroit et choisissez "Aller à l'héritier" dans le menu contextuel. "Go To Inheritor" peut également être appliqué à la méthode de navigation vers les remplacements et les implémentations d'une méthode d'interface. Pour une interface, vous pouvez appeler à nouveau "Find Usages Advanced", juste un clic droit) où trouver toutes les extensions et implémentations. Pour un type - types dérivés. Et ma fonctionnalité préférée - cliquez en maintenant la touche Contrôle sur n'importe quel type / méthode pour accéder à sa déclaration.
Je pense que c'est un outil indispensable pour les développeurs .net.
Dans Resharper 9.2, sur tout type de code source, rt-cliquez sur "Find Usage Advanced", sélectionnez Find = "Derived" et Scope = "Solutions and Libraries".
Par exemple, pour rechercher tous les héritiers (à la fois dans la bibliothèque et dans votre code) d'une classe de base dans une DLL incluse de n'importe quel fournisseur, déclarez une variable dans votre code avec cette classe de base. Cliquez ensuite avec le bouton droit sur ce nom de classe de base que vous venez de saisir.
la source
Pour VS2012,
la source
Vous n'avez pas nécessairement besoin de Reflector pour cela - la vue «Diagramme de classes» de Visual Studio vous permettra également de trouver facilement toutes les classes dérivées pour une classe particulière. Cliquez avec le bouton droit sur la classe dans "Vue de classe" et choisissez "Afficher le diagramme de classe". Si le diagramme n'indique pas le niveau de détail souhaité pour la hiérarchie, cliquez avec le bouton droit de la souris sur la case de la classe dans le diagramme et choisissez "Afficher les classes dérivées".
Ce n'est peut-être pas aussi direct que Resharper, mais c'est une option si vous n'avez pas déjà R #.
Malheureusement, je ne suis pas certain des versions particulières de Visual Studio.
la source
C'est la réponse la moins paresseuse (je suis juste fier de cette réponse :)
Je n'ai pas ReSharper, je l'ai déjà essayé mais je ne voulais pas l'acheter. J'ai essayé un diagramme de classes mais ce n'est pas pratique du tout car le diagramme hiérarchique couvre le monde 3 fois et l'écran de mon ordinateur portable n'a pas une largeur infinie. Ma solution naturelle et simple a donc été d'écrire du code Windows Forms pour parcourir les types dans un assembly et d'utiliser la réflexion pour ajouter des nœuds à une arborescence, comme suit:
veuillez supposer que vous avez une zone de texte, une arborescence et d'autres éléments nécessaires sur un formulaire dans lequel ce code s'exécute
la source
AppDomain.CurrentDomain.GetAssemblies()
? Jetez un œil à ceci: stackoverflow.com/questions/851248/…À partir de 'Visual Studio 2015 Update 1', vous pouvez simplement cliquer avec le bouton droit de la souris sur un nom de classe dans l'éditeur de code de classe, puis sélectionner 'Aller à l'implémentation' dans le menu contextuel: avec Ctrl + F12 étant le raccourci.
Voir https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ pour plus de détails.
la source
Personne ne l'a encore mentionné, alors je vais l'ajouter.
Jetbrains dotPeek est un décompilateur .NET gratuit qui a le pouvoir d'afficher ces informations facilement.
Téléchargement gratuit: http://www.jetbrains.com/decompiler/
Jetbrains est la société qui fabrique Resharper.
Étapes pour trouver des classes dérivées:
ActionResult
ActionResult
déclaration de classe, cliquez avec le bouton droit de la souris et sélectionnez 'Symboles dérivés'la source
En supposant que Resharper est installé: avec le curseur sur la classe / interface, faites un clic droit - Inspecter - Hiérarchies
Cela montre les sous-classes, les implémentations et les superclasses.
la source
Dans Visual Studio Class View, accédez à la classe qui vous intéresse et trouvez sa base et ses classes dérivées
la source
Vous pouvez également utiliser Reflector .
Chargez tous les assemblys dans lesquels vous souhaitez qu'il recherche, accédez à un type et développez l'élément Types dérivés.
Vous pouvez également le faire dans l'Explorateur d'objets, mais pour une raison quelconque, VS2008 ne peut le faire que dans l'une des vues .Net Framework. (VS2010 Beta 2 peut le faire dans n'importe quelle vue)
la source
Pour les classes Framework, j'utilise la bibliothèque MSDN. La section Hiérarchie d'héritage va dans les deux sens. Certes, cela n'aide pas beaucoup pour certaines bibliothèques 3D Party.
la source
Avec l'aide de ReSharper (version 2016.1.2) juste Ctrl+ Alt+ Clicksur la classe de base. Vous verrez quelque chose comme ceci:
la source
Faites glisser la classe ou l'espace de noms de l' Explorateur d'objets vers le fichier Class Digram .
Comment obtenir un joli diagramme de classes pour les classes .net intégrées?
la source
sélectionnez le type et faites un clic droit voir quelque chose --- afficher sur la carte de code --option sélectionnez-le générer le format d'image pour ceux qui héritent de ce type comme très belle image au format de fichier .dgml cela donne beaucoup plus d'informations sur le type
la source
En tant qu'option pour ceux qui utilisent Visual Assist, vous pouvez également appuyer sur Maj + ALT + G (pendant que le curseur est sur le nom de la classe) pour faire apparaître le menu contextuel "Aller à Associé", et s'il existe des classes dérivées, vous obtiendrez un sous-menu pour cela, cela les répertorie tous et montre même les structures d'héritage parmi ces classes dérivées.
la source
Codez-le simplement.
la source
si vous avez mis à niveau vers VS2012, vous pouvez utiliser le "Code Map".
Cliquez avec le bouton droit de la souris sur le type dont vous souhaitez afficher la hiérarchie d'héritage et choisissez "Ajouter à la carte de code". Ensuite, dans la vue de la carte de code, vous pouvez développer les nœuds et faire un clic droit pour choisir "Afficher les classes dérivées / de base". Malheureusement, cela ne fonctionne pas pour les classes fournies par .NET.
la source
Pour Visual Studio 2012 ( sans ReSharper )
la source
Mise à jour 2020:
Vous pouvez utiliser les cartes de code de Visual Studio qui fonctionnent assez bien.
Il suffit de faire un clic droit sur la classe et à naviguer:
Code Map
>Show Related Items on Code Map
>Show All Derived Types
Remarque:
PS Cela vaut vraiment la peine de conserver la version Enterprise (ou du moins la version Preview de celle-ci) sur votre machine, car elle dispose d'un tas d' outils vraiment utiles qui ne sont pas inclus dans les autres éditions.
la source
ActionResult
(l'exemple du PO)Une manière très simple de le faire est de rechercher
: Classname
dans la fenêtre «Rechercher et remplacer» (CTRL + F) et d'utiliser l'option «Rechercher les options / Faire correspondre le mot entier». Vous ne trouverez que les classes héritées.la source
class DDerived : IInterface, BBase