2009-06-04 11 views
22

Tengo una solución.
Tengo una interfaz.
Tengo varias clases que implementan la interfaz.¿Cómo puedo encontrar qué clases implementan una interfaz determinada en Visual Studio?

Puedo usar "Buscar todas las referencias" para encontrar dónde se implementa la interfaz, pero también arroja resultados donde la interfaz es el tipo de devolución, o donde una clase implementa explícitamente el método de una interfaz.

¿Existe una forma mejor de encontrar rápidamente qué clases implementan la interfaz?

+0

Posible duplicado de http://stackoverflow.com/questions/620376/how-do-you-find-all-implementations-of-an- interfaz –

+0

Parece que actualmente (sin comprar complementos) esto no es posible en Visual Studio. Esta es una herramienta muy costosa y, sin embargo, carece de esta útil función. No entiendo por qué la gente está tan enamorada de Visual Studio. – jcollum

Respuesta

4

Reflector (que usó para ser gratis) le mostrará esto; cargue el dll y encuentre la interfaz (F3) - expanda el nodo "Tipos derivados".

+0

En el caso de un sitio web, donde las clases (pueden) vivir en el directorio App_Code, ¿entonces qué? –

+0

No puedo decir: no he usado el "sitio web" en algunos años, y prefiero el "proyecto de aplicación web". –

+1

ILSpy se puede usar también – sergtk

1

El uso de la función "Ir al heredero" en Resharper o un complemento similar haría el truco.

+0

no funciona para mí para una interfaz –

2

¿Por qué no buscar en toda la solución para esto:

\:.*MyInterface 

y permitir expresiones regulares en el cuadro de búsqueda - que debe hacer el trabajo.

Editar: Se corrigió la expresión regular, era para java antes, gritos.

+0

No en C#; y no hay una versión simple pero confiable de: IMyInterface - podría ser: SomeClass, IMyInterface | : SomeClass, ISomethingElse, IMyInterface,: SomeClass donde T: IMyInterface, etc. –

+0

IMyInterface fue solo un ejemplo, ya que SkippyFire dice que tiene una interfaz, supongo que tiene una interfaz específica, y por lo tanto un nombre para ella. La búsqueda de expresiones regulares debería funcionar, funciona para mí en Visual Studio 2008. Acabo de editar la expresión, ya que la otra era para Java, mi culpa. – Steffen

+0

Perdón por los muchos comentarios, leí totalmente su comentario, y puedo ver si vuelvo a leerlo, que tiene un buen punto. Sin embargo, la expresión regular es lo suficientemente sólida para SomeClass: ISomething, IMyInterface Pero con limitaciones genéricas tenemos un problema. Podría hacerse fácilmente, si Visual Studio implementó un motor de expresiones regulares adecuado para search'n'replace, pero lamentablemente no :-( – Steffen

8

Usando VS2010, con Productivity Power Tools instalado (gratis):

  1. modo Dejar de depuración si es necesario
  2. Pase el ratón sobre una referencia a la interfaz
  3. Ampliar el menú desplegable que aparece
  4. "implementado por "
+0

Gracias. funcionó muy bien para mi Más fácil que reflector. – RayLoveless

+2

No para Visual Studio 2012 –

Cuestiones relacionadas