2010-02-04 11 views
15

¿Hay alguna manera de mostrar todas las clases que implementan un método determinado desde una interfaz? Si hace clic en F12 en Visual Studio en una llamada a método, irá a su definición. Si es una interfaz, entonces todavía tienes que ir y buscar la clase. Sería bueno poder obtener una ventana emergente y elegir una de las clases que implementa la interfaz ... ¿Eso existe?Ir a Definición en Visual Studio - Interfaces

Respuesta

1

Reflector puede hacerlo (al menos en los ensamblajes que tiene abiertos).

(Es evidente que no puede haber una implementación en cualquier asamblea, por lo que una búsqueda completa para todos los aplicación requeriría comprobar cada asamblea.)

2

utilizo el DevExpress/CodeRush Go To Implementator plugin (todo gratis).

Si instala DevExpress no es obvio cómo iniciarlo, se supone que debes usar el cambio - ctrl - alt - corto o teclado pero recomiendo agregarlo al menú de archivo añadiendo la siguiente entrada de registro:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Developer Express\CodeRush for VS\11.2] 
"HideMenu"=dword:00000000 

(Drop the \Wow6432Node\ si estás en 32 bits)

11

Y sin que en estancando cualquier extensión de Visual Studio ...

Si hace clic derecho en el método y selecciona 'buscar todas las referencias' o presiona f12 + shift, se devolverá una lista de implementaciones en Find Symbol Results; ordenado por interfaz, clase, método de llamada.

actualización

Instalar VS 2015, haga clic derecho - GoToImplementation (si tiene una implementación de la interfaz, VS navegará directamente a él, si tiene dos o más, VS mostrará una lista de ellos)

+0

CTRL - F12 (GoToImplementation), Visual Studio 2015 –

7

¡Por supuesto que ya existe en Visual Studio! Está allí desde siempre.

Haga clic derecho en su código (por ejemplo, propiedad) y seleccione "Ver jerarquía de llamadas". En la ventana Call Hierarchy, seleccione la carpeta Implements.

Ahí lo tienes. ¿Por qué Resharper? Por supuesto, no es tan complejo como ir a la implementación de resharper, que permite la interrogación directa en la interfaz, pero solo una propiedad o un método de esa interfaz debería ser suficiente. Ej:

public interface IModule 
{ 
int Count { get; set; } 
} 

public class Module : Imodule 
{ 
    public int Count {get; set;} 
} 

public class Module2 : Imodule 
{ 
    public int Count {get; set;} 
} 

Haga clic derecho sobre la propiedad Count (en cualquier lugar - dentro de la clase o en el interior de la interfaz) y seleccione "Ver Jerarquía de llamada", debe decir qué clase implementa, y por lo tanto, toda la interfaz.

Al principio, todos amamos Resharper, ¡con el tiempo, todos lo odiamos!

2

Otra alternativa es colocar el cursor sobre el método que desea investigar, luego presionar ctrl +, (control y la tecla de la coma) Esto mostrará el diálogo de navegación con la interfaz y la implementación del método.

Cuestiones relacionadas