Comment trouver rapidement la ou les implémentation (s) d’une méthode d’interface?

Existe-t-il un moyen rapide de trouver toutes les implémentations, pas les références à la méthode / propriété / etc d’une interface? Voici un exemple de code:

public class SomeClass : IBaseClass { public Int32 GetInt() { return 1; } } public interface IBaseClass { public Int32 GetInt(); } public class SomeOtherClass { IBaseClass _someClass; private TestMethod() { _someClass = new SomeClass(); _someClass.GetInt(); } } 

Je veux rapidement accéder à SomeClass.GetInt () lors de la révision de SomeOtherClass.TestMethod (). Si je clique avec le bouton droit sur _someClass.GetInt () et que je clique sur “Aller à la définition”, cela m’amène à l’interface. Si je clique sur “Rechercher toutes les références”, je pourrais potentiellement voir une liste de tous les usages … pas seulement les classes qui implémentent la méthode GetInt ().

Y a-t-il un moyen plus rapide de trouver cela? Des conseils d’autres développeurs? Nous utilisons DI pour la plupart de nos dépendances, ce qui signifie que le suivi à travers un code profondément nested prend une éternité .

Comme je n’aime pas utiliser la souris lors du codage, je

  • déplace le curseur sur la méthode
  • tapez ctrl + k clrl + t pour ouvrir la fenêtre Hiérarchie d’appels
  • déplacez-vous vers le nœud Implements.
  • tapez Return pour accéder à l’implémentation sélectionnée

AFAIK c’est le moyen le plus rapide de trouver l’implémentation d’une méthode, sans ReSharper.

(En passant, vous pouvez utiliser le même système pour passer d’une implémentation de méthode de classe à la déclaration d’interface correspondante: sélectionnez simplement la racine)

Alt-End fera cela dans ReSharper, je crois.

Sans ReSharper, la meilleure façon de procéder est la suivante:

Rechercher dans les fichiers (Ctrl + Maj + F) Trouver quoi: “Class * ISomeClass” Options de recherche: “Utiliser les caractères génériques”

Cela trouvera toute l’implémentation et que vous pouvez rechercher votre fonction dans une implémentation concrète.

Si votre interface se trouve dans la même bibliothèque que votre modèle concret auquel vous souhaitez généralement accéder, vous pouvez append un “alias using” à l’object concret. Les «utilisations» sont des aides de toute façon, et cela aide.

 using System; using PrimaryImplementation = YourNamespace.YourConcreteObject; public interface IYourInterface{ } 

Lorsque vous accédez à l’interface, vous disposez d’un moyen rapide (et sale) pour accéder à l’implémentation principale de votre interface. F12-> F12!

R # a une option Aller à l’implémentation dans le menu contextuel, ce qui est très pratique pour cela.