Question

Supposons que vous ayez une interface définie en C #. Quelle est la méthode la plus simple pour trouver toutes les classes fournissant une implémentation de l’interface?

La méthode de la force brute consisterait à utiliser "Rechercher les références". dans Visual Studio et parcourez manuellement les résultats pour séparer les utilisations des implémentations, mais pour une interface dans une base de code volumineuse fortement référencée avec relativement peu d'implémentations, cela peut prendre beaucoup de temps et être source d'erreurs .

En Java, l’exécution de javadoc sur la base de code (en utilisant l’option -private pour inclure des classes privées) générerait une page de documentation pour l’interface (par exemple, Comparable ) qui inclut toutes les classes d'implémentation de l'interface ainsi que toutes les sous-interfaces (bien qu'il n'inclue pas les classes d'implémentation de sous-interfaces, celles-ci sont relativement faciles à déterminer en explorant les sous-interfaces répertoriées). C'est cette fonctionnalité que je recherche, mais avec C # et Visual Studio.

Était-ce utile?

La solution

(Modifier en fonction du commentaire ...)

Si ReSharper est installé:

Dans Visual Studio, cliquez avec le bouton droit de la souris sur le nom du type et choisissez "Aller à l'héritage". Vous pouvez également sélectionner le nom du type, puis accéder à ReSharper / View / Type Hierarchy pour ouvrir un nouvel onglet. (Le menu vous montrera le raccourci clavier - cela peut varier, c'est pourquoi j'ai expliqué comment le trouver:)

Si vous ne possédez pas ReSharper:

  • Vous pouvez utiliser Reflector , qui peut vous montrer toute la hiérarchie des types facilement - juste sous le nom du type sont des éléments extensibles pour les types de base et les types dérivés. Des outils similaires sont disponibles, tels que ILSpy et dotPeek .
  • Acheter ReSharper - c’est un excellent outil:)

Autres conseils

Vous pouvez cliquer avec le bouton droit de la souris sur le nom d'une méthode (définition dans l'interface ou implémentation dans une autre classe) et choisir Afficher la hiérarchie des appels. Dans la fenêtre Hiérarchie des appels, il y a "Implements". dossier dans lequel vous pouvez trouver tous les emplacements de l’implémentation de la méthode d’interface.

Placez le curseur sur le type de classe ou d'interface et

CTRL + F12

Avec Visual Studio 2010 +

Cliquez avec le bouton droit de la souris sur une méthode membre et choisissez Afficher la hiérarchie des appels. Développez le dossier Implements. Ceci répertorie tous les types qui implémentent l'interface à laquelle la méthode appartient.

entrer la description de l'image ici

Avec Resharper 7

Cliquez avec le bouton droit sur l'interface > Accédez à > Symboles dérivés. Les symboles répertoriés en gras proviennent directement de l'interface. Les symboles non gras proviennent d’une superclasse.

entrer la description de l'image ici

Pour ceux qui utilisent Visual Studio 2015, il existe une extension géniale appelée Accéder à la mise en œuvre . Essayez-le.

Une fois l'extension installée, vous pouvez cliquer avec le bouton droit de la souris sur n'importe quelle occurrence de l'interface (par exemple, IUrlShortener) et cliquer sur le menu Aller à la mise en œuvre . Si vous n'avez qu'une classe qui implémente l'interface, cliquer sur le menu vous mènera directement à la classe. Si vous avez plusieurs classes qui implémentent l'interface, toutes les classes seront listées.

Pour ceux qui utilisent Visual Studio 2015, installez Visual Studio 2015 Update 1 RC. Extrait du blog Visual Studio :

  

Nous avons publié aujourd'hui Visual Studio 2015 Update 1 RC, qui s'appuie sur le CTP Update 1 que nous avons publié il y a trois semaines. Outre les fonctionnalités introduites dans le CTP décrites ici, la version candidate comprend les éléments suivants:

     
      
  • Aller à la mise en œuvre . La fonctionnalité que beaucoup d’entre vous attendaient: il vous suffit de cliquer avec le bouton droit de la souris sur une interface ou une méthode abstraite, puis de sélectionner cette commande pour naviguer vers la mise en oeuvre.
  •   

Je ne pense pas que cette fonctionnalité soit intégrée à VS, mais le resharper de l'IIRC dispose de cette fonctionnalité.

Vous pouvez effectuer une recherche d'expression régulière pour l'interface.

:(\ *[^},]+,)*\ *IMyInterfaceName

CTRL + MAJ + F ouvre la fenêtre suivante:

Capture d'écran de Visual Studio

Je préfère les " Naviguer vers ... " option. Avec votre curseur sur l'appel de fonction, essayez ce qui suit:

Touche de raccourci:

  1. Ctrl +, (Ctrl + virgule)

Menu:

  1. Menu Édition
  2. Cliquez sur "Naviguer vers ...".

Avantages:

  • N'affiche pas toutes les références telles que " Trouver toutes les références "
  • Affiche le " type " de la mise en œuvre de sorte qu'il va noter quelle est votre interface

Utilisez Maj + F12 pour afficher toutes les références, y compris les définitions.

Si vous utilisez le raccourci resharper ALT + FIN , il peut être utile de rechercher tous les héritiers.

J'ai entendu dire (sans expérience moi-même) que doxygen est un fichier .Net comme javadoc java.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top