Dans Visual Studio, lorsque vous cliquez avec le bouton droit sur un appel de méthode, vous accédez à l'implémentation de cette méthode dans une classe, sauf si vous accédez à cette méthode via une interface: dans ce cas, vous accédez à la méthode d'interface et non à l'implémentation réelle.
Existe-t-il un moyen / des astuces (raccourci clavier ou autre) pour accéder à cette implémentation réelle? Sinon, vous êtes obligé d'ajouter un commentaire juste pour vous rappeler où vous l'avez implémenté qui n'est vraiment pas productif et sujet aux erreurs!
Mise à jour: réponses intéressantes mais je ne suis pas vraiment satisfait car toutes sont encombrantes. Je vais donner un exemple précis:
IInterface iInterface = someObject;
iInterface.someMethod();
En fait, si Visual Studio était juste un peu intelligent pour regarder juste une ligne au-dessus de l'appel de méthode, il verrait où se trouve l'objet réel. Et cela me ferait économiser beaucoup de frappes au clavier et éviterait d'utiliser "trouver toutes les références" puis de scanner les lignes avec mes yeux fatigués pour voir quelle ligne contient la bonne :)
la source
Réponses:
Je fais ce qui suit:
1) Faites un clic droit sur la méthode et cliquez sur "Afficher la hiérarchie des appels" (ou raccourci Ctrl + K, Ctrl + T)
2) Développez le dossier "Implements x" qui vous montrera ensuite toutes les implémentations de cette méthode. Cliquez sur un pour y aller.
Relativement rapide et facile. Malheureusement, il ne semble pas y avoir d'équivalent pour l'interface elle-même.
mise à jour : à partir de la mise à jour 1 de Visual Studio 2015, faites un clic droit sur une méthode et sélectionnez aller à l'implémentation. Vous pouvez également le mapper à un raccourci clavier via Outils> Options> Environnement> Clavier et rechercher la commande Edit.GoToImplementation. Le raccourci par défaut est
Ctrl+F12
. (F12
naviguera vers l'interface).la source
Avec VS2013, on peut placer le curseur sur la méthode et utiliser Naviguer vers ... (CTRL +,), et il affichera tous les emplacements où le nom est déclaré. Ne fonctionne pas bien si différentes interfaces utilisent les mêmes noms de méthode.
Avec VS2015 Update 1, il existe désormais un nouveau raccourci appelé "Aller à l'implémentation".
la source
Edit.NavigateTo
:)J'ai créé une extension gratuite pour Visual Studio 2010 et Visual Studio 2012 appelée Marge d'héritage pour fournir cette fonctionnalité spécifique, ainsi que pour donner une indication claire lorsqu'une méthode implémente une méthode d'interface en raison d'une correspondance de signature. Dans la version actuelle, vous pouvez cliquer avec le bouton droit sur n'importe quel glyphe pour obtenir un menu d'éléments vers lesquels naviguer.
Marge d'héritage - Visual Studio Gallery
(source: microsoft.com )
la source
Faites un clic droit puis "Rechercher toutes les références".
Cela affichera la ligne de code pour tous les endroits où la méthode est utilisée, y compris la déclaration d'interface et les implémentations de la méthode d'interface. Vous pouvez ensuite cliquer sur la ligne pour accéder à l'emplacement du code.
la source
Shift + F12
.En fonction de la version de Visual Studio dont vous disposez, je dirai conditionnellement «oui».
J'utilise actuellement Ultimate et je n'ai pas d'autres versions pour le vérifier. Cela dit, dans Ultimate, vous pouvez utiliser l'Explorateur d'architecture pour trouver des implémentations. C'est un peu plus compliqué que la méthode du clic droit, mais voici comment cela fonctionne.
View->Architecture Explorer
(ou CTRL-W, N)Types
. Cliquez iciInterfaces
Members
apparaîtra alors à droite. Cliquez sur ce boutonImplemented by
(sousInbound Navigation
) et cela fournira une liste d'implémentations de votre interface.la source
Dans 2012 Ultimate, vous pouvez rechercher l'interface dans l'explorateur de solutions. Cliquez avec le bouton droit sur l'interface et choisissez "Types dérivés", les classes implémentées seront affichées dans l'explorateur de solutions. Je ne sais pas si cela fonctionne en express.
la source
Visual Studio 2015 Update 1 (publié en décembre 2015) a maintenant ajouté une fonctionnalité de clic droit `` Aller à l'implémentation '' en standard.
la source
Pour les personnes qui utilisent Resharper, appuyer sur CTRL + F12 vous fera passer directement à la méthode de classe!
la source
Ce n'est pas possible. Ce que vous décrivez n'aurait de sens que si l'interface était limitée à 1 implémentation.
Prenons cet exemple:
Si vous utilisez, passez à la mise en œuvre de Write dans UseIWrite, cela vous amène à la déclaration de l'interface, car à ce stade, n'importe laquelle des implémentations IWrite pourrait être passée dans la méthode.
Heureusement, certains outils comme par exemple ReSharper vous proposent de trouver toutes les utilisations de la méthode, afin que vous puissiez facilement naviguer vers l'implémentation souhaitée.
la source
Visual Studio avec la mise à jour 1 implémente désormais cette fonctionnalité! Faites un clic droit sur le membre et vous devriez voir "Aller à l'implémentation" juste sous "Aller à la définition".
la source
Découvrez cette nouvelle extension gratuite Visual Studio 2013 - Implémentateur . Il ajoute l'option "Aller à l'implémentation" au menu contextuel de l'éditeur Visual Studio.
Ce n'est pas aussi fiable et rapide que Resharper, mais ça fonctionne très bien.
la source
Vous pouvez essayer le
Ctrl + F12
raccourci. Cela vous mènera à l'implémentation tout comme il vous conduira à des méthodes sans interface utilisant F12. [Je l'ai essayé dans VS 2017, je ne suis pas sûr des autres versions]la source
Visual Studio peut uniquement vous indiquer où il est référencé, mais cela peut être trop grossier.
Il existe d'autres outils qui peuvent vous en dire plus sur la structure de votre application, y compris quelle classe implémente quelle interface, quelle méthode remplace quelle autre méthode, etc. Personnellement, je préfère utiliser Comprendre pour C / C ++.
la source
Aller à la déclaration ouvrira la méthode d'interface. Aller à l'implémentation, vous emmènera, ou listera pour vous, les classes qui implémentent le code pour cette méthode d'interface (pas la méthode d'interface elle-même).
Mettre à jour
Comme Jon Skeet l'a souligné dans les commentaires (et j'ai manqué avant de répondre), la fonctionnalité que j'ai décrite pourrait être une fonctionnalité de ReSharper ... pas une fonctionnalité de Visual Studio.
la source
Non. Ce n'est pas possible, malgré la structure de code élaborée en mémoire maintenue par VS, la navigation dans le code est plutôt ... avare.
Il semble que la seule alternative soit une recherche globale avec "Rechercher toutes les références" suivie d'une recherche manuelle dans la liste résultante pour exclure les déclarations de valeurs saisies, les conversions, etc. ou l'utilisation d'autres outils dans VS autres que l'éditeur de code. Tout cela est plutôt complexe et décevant.
la source