Is there a way to navigate to real implementation of method behind an interface?

user310291 picture user310291 · Jan 11, 2011 · Viewed 78.7k times · Source

In Visual Studio, when you right-click a method call, you go to the implementation of that method inside a class except if you access this method through an interface: in that case you go to the interface method not to the actual implementation.

Is there a way / tips (key shortcut or anything) to access this actual implementation ? Otherwise you are stuck to add some comment just to remember where you did implement it that's really not productive and error prone !

Update: interesting answers but I'm not really satisfied because all are cumbersome. I will give a precise example:

IInterface iInterface = someObject;                        
iInterface.someMethod();

Actually if Visual Studio was just a little bit clever to look just one line above the method call it would see where's the real object is. And that would save me a lot of keystrokes and avoid to use "find all references" and then scan the lines with my tired eyes to see which line contain the right one :)

Answer

MajorRefactoring picture MajorRefactoring · Oct 30, 2012

I do the following:

1) Right click on the method and click "View call hierarchy" (or shortcut Ctrl+K, Ctrl+T)

2) Expand the "Implements x" folder which will then show you all the implementations of that method. Click on one to go there.

Relatively quick and easy. Annoyingly though there doesn't seem to be an equivalent for the interface itself.


update: as of Visual Studio 2015 update 1, right click on a method and select go to implementation. You can also map it to keyboard shortcut via Tools > Options > Environment > Keyboard and search for Edit.GoToImplementation command. The default shortcut is Ctrl+F12. (F12 will navigate to the interface).