Visual Studio: Comment puis-je afficher toutes les classes héritées d'une classe de base?
Dans Visual Studio, Comment puis-je afficher toutes les classes héritées d'une classe de base?
Par exemple, dans ASP.NET MVC il y a plusieurs " ActionResult ' types -- et ils héritent tous de mettre en oeuvre la classe de base ActionResult
.
Il ressemble sauf que vous venez de "savoir" que View
et Json
sont valables ActionResult
types, il n'y a aucun moyen que vous pouvez facilement trouver cette information.
Merci de me prouver le contraire.
Est-il quelque chose dans le navigateur d'objet qui rend ce facile à trouver?
Je suis même pour des suggestions d'outils en dehors de Visual Studio pour découvrir cette information sur les différentes classes. Par exemple: est-il quelque chose dans Resharper qui va m'aider?
- Avec Visual C# 2010 Express, je recherche la solution pour les ": ActionResult". Pas l'idéal, mais mieux que rien.
- Je pense que vous ne comprenez pas ma question. JsonResult (référence ici: msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult.aspx) hérite de ActionResult. Il y a plusieurs autres classes qui héritent de ActionResult. Ce est un moyen facile de voir toutes les classes qui héritent de ActionResult?
- Dans ce cas, le code que j'utilise n'est pas le code qui s'affiche directement dans ma solution. Ils sont les classes du framework MVC dans une autre assemblée. La recherche pour ": ActionResult" ne fonctionne pas pour tout code que j'utilise à partir d'un assembly.
- C'est une évidente fonction utile. Nous devrions suggérer à visualstudio.uservoice.com
Vous devez vous connecter pour publier un commentaire.
Sûr, Resharper pouvez le faire. Et bien plus encore.
Juste à droite, cliquez sur le nom de type, en tout lieu et de choisir "Aller À l'Héritier" dans le menu contextuel.
"Aller À l'Héritier" peut être également appliquée à la méthode de navigation pour les remplacements et une méthode d'interface implémentations. Pour une interface, vous pourriez l'appeler "Trouver des Usages Avancés" de nouveau, juste à droite de la souris) où trouver tous extendings et des implémentations. Pour un type dérivé de types.
Et ma fonction préférée - cliquez avec le holding de Contrôle sur n'importe quel type/mode de navigation pour sa déclaration.
Je pense que c'est un outil indispensable pour .net développeurs.
Dans Resharper 9.2, sur n'importe quel type dans le code source, rt-cliquez sur "Rechercher d'Utilisation Avancé", sélectionnez Rechercher="Dérivés" et Scope="Solutions et des Bibliothèques".
Par exemple, pour trouver tous les héritiers (à la fois dans la bibliothèque et de votre code) de certains de la classe de base dans une DLL à partir de n'importe quel fournisseur, déclarez une variable dans ton code avec celui de la classe de base. Ensuite bouton droit de la souris sur le nom de classe de base que vous venez de taper.
Pour VS2012,
Vous n'avez pas nécessairement besoin de Réflecteur pour ce - Visual Studio "Diagramme de Classe" vue vous permettra de trouver facilement toutes les classes dérivées d'une classe particulière ainsi. Clic droit sur la classe dans "point de Vue de Classe" et choisissez "Afficher le Diagramme de Classe". Si le diagramme n'indique pas le niveau de détail que vous souhaitez pour la hiérarchie, cliquez du bouton droit sur la boîte de la classe dans le diagramme, et choisissez "Afficher les Classes Dérivées".
Pourrait ne pas être aussi direct que Resharper, mais c'est une option si vous n'avez pas R# déjà.
Malheureusement, je ne suis pas certain de savoir quelles versions de Visual Studio ont.
C'est le moins paresseux réponse (je suis juste fier de cette réponse 🙂
Je n'ai pas de ReSharper, essayé avant, mais ne veulent pas l'acheter.
J'ai essayé un diagramme de classe, mais n'est pas pratique du tout parce que la hiérarchie schéma s'étend sur le monde 3 fois plus et mon écran de votre ordinateur portable n'a pas de largeur infinie.
Donc, mon naturel et facile solution était d'écrire certaines Formes de Windows code pour itérer sur tous les types d'une assemblée et d'utiliser la réflexion pour ajouter des nœuds d'une arborescence, comme suit:
veuillez supposons que vous disposez d'une zone de texte, une arborescence et d'autres choses nécessaires à un formulaire dans lequel l'exécution de ce code
AppDomain.CurrentDomain.GetAssemblies()
? Jetez un oeil à ceci: stackoverflow.com/questions/851248/...À partir de Visual Studio 2015 mise à Jour de 1' vous pouvez simplement cliquez droit sur un nom de classe dans la classe de l'éditeur de code, puis sélectionnez "Aller À la mise en Œuvre" 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.
Personne ne l'a mentionné encore, donc je vais l'ajouter.
Jetbrains dotPeek est un logiciel gratuit .NET decompiler a le pouvoir de montrer cette information facilement.
Téléchargement gratuit: http://www.jetbrains.com/decompiler/
Jetbrains est la société qui fait de Resharper.
Étapes pour trouver les classes dérivées:
ActionResult
ActionResult
déclaration de classe, cliquez-droit et sélectionnez " Dérivés de symbolesEn supposant que vous avez Resharper installé: avec le curseur sur la classe/de l'interface, cliquez-droit - Inspectez - les Hiérarchies
Cette montre sous-classes, les implémentations et des super-classes.
Vous pouvez également utiliser Réflecteur.
Charge tous les assemblys vous voulez qu'il ressemble en, accédez à un type, et d'élargir les Types Dérivés de l'élément.
Vous pouvez aussi faire cela dans le Navigateur d'Objet, mais pour une raison quelconque VS2008 ne peut le faire dans un de la .Net Framework points de vue. (VS2010 Bêta 2 peut le faire dans n'importe quelle vue)
Dans Visual Studio Vue de Classe de naviguer à la classe qui vous intéresse et de trouver ses classes de base et dérivées
Pour les classes du Framework, j'utilise la Bibliothèque MSDN. La Hiérarchie d'Héritage section va dans les deux sens. Certes pas beaucoup d'aide pour de la 3d bibliothèques de tiers, si.
Avec l'aide de ReSharper (version 2016.1.2) juste Ctrl+Alt+Cliquez sur la Classe de Base. Vous verrez quelque chose comme ceci:
Glisser de la classe ou de l'espace de de l'Explorateur d'Objets à Classe Digramme fichier.
Comment obtenir un joli diagramme de classe pour intégré .net cours?
sélectionnez le type de droite et cliquez sur voir quelque chose ---afficher sur le code de la carte-option sélectionner générer l'image pré-formé pour ceux qui héritent de ce type très belle image .dgml format de fichier, il donne beaucoup plus d'informations sur le type
Simplement ce code.
si vous avez mis à niveau pour VS2012 vous pouvez utiliser le "Code de la Carte".
Clic droit sur le type que vous voulez afficher la hiérarchie d'héritage et de choisir "Ajouter au code de la carte".
Puis dans le code de la carte d'affichage vous pouvez développez les nœuds et faites un clic droit pour choisir "Afficher les Dérivés/classes de Base".
Malheureusement, il ne fonctionne pas pour le .FILET, à condition classes.
Pour Visual Studio 2012 (Sans ReSharper)
Comme une option pour ceux qui utilisent Visual Assist, vous pouvez également appuyer sur Maj + ALT + G (alors que le curseur est sur le nom de la classe) pour faire apparaître le "Goto" Liés à un menu contextuel, et si il y a des classes dérivées, vous obtiendrez un sous-menu pour ce qui répertorie tous et montre même l'héritage des structures parmi ces classes dérivées.
Un moyen très simple de faire cela, est à la recherche de
: Classname
dans la "Fenêtre Rechercher et Remplacer" (CTRL + F) et utiliser la fonction "Trouver des Options/mot entier" Option.Vous ne trouverez que les les classes héritées.
class DDerived : IInterface, BBase