En Visual Studio, ¿cómo muestro todas las clases heredadas de una clase base?
Por ejemplo , en ASP.NET MVC hay varios tipos de ' ActionResult ', y todos heredan / implementan la clase base ActionResult
.
Parece que a menos que solo 'sepa' eso View
y Json
sean ActionResult
tipos válidos , no hay forma de que pueda encontrar fácilmente esta información.
Por favor, demuéstrame que estoy equivocado.
¿Hay algo en el navegador de objetos que lo haga fácil de encontrar?
Incluso tengo sugerencias de herramientas fuera de Visual Studio para descubrir esta información sobre varias clases. Por ejemplo: ¿hay algo en Resharper que me ayude?
visual-studio
class
abstract-class
Dan Esparza
fuente
fuente
Respuestas:
Claro, Resharper puede hacer esto. Y mucho más.
Simplemente haga clic derecho en el nombre del tipo en cualquier lugar y elija "Ir al heredero" en el menú contextual. "Ir al heredero" también se puede aplicar al método para navegar a las anulaciones y las implementaciones de un método de interfaz. Para una interfaz, puede volver a llamar "Buscar usos avanzados", simplemente haga clic con el botón derecho) donde encontrará todas las extensiones e implementaciones. Para un tipo derivado de tipos. Y mi característica favorita: haga clic y mantenga presionado Control en cualquier tipo / método para navegar a su declaración.
Creo que es una herramienta imprescindible para los desarrolladores de .net.
En Resharper 9.2, en cualquier tipo de código fuente, haga clic en "Buscar uso avanzado", seleccione Buscar = "Derivado" y Alcance = "Soluciones y bibliotecas".
Por ejemplo, para encontrar todos los herederos (tanto en la biblioteca como en su código) de alguna clase base en una DLL incluida de cualquier proveedor, declare una variable en su código con esa clase base. Luego haga clic derecho en el nombre de la clase base que acaba de escribir.
fuente
Para VS2012,
fuente
No necesariamente necesita Reflector para esto: la vista "Diagrama de clase" de Visual Studio le permitirá encontrar fácilmente todas las clases derivadas para una clase en particular. Haga clic derecho en la clase en "Vista de clase" y elija "Ver diagrama de clase". Si el diagrama no muestra el nivel de detalle que desea para la jerarquía, haga clic derecho en el cuadro de la clase en el diagrama y elija "Mostrar clases derivadas".
Puede que no sea tan directo como Resharper, pero es una opción si aún no tienes R #.
Desafortunadamente, no estoy seguro de qué versiones particulares de Visual Studio lo tienen.
fuente
Esta es la respuesta menos perezosa (estoy orgulloso de esta respuesta :)
No tengo ReSharper, lo probé antes pero no quería comprarlo. Probé un diagrama de clase pero no es práctico en absoluto porque el diagrama de jerarquía abarca el mundo 3 veces y la pantalla de mi computadora portátil no tiene un ancho infinito. Entonces, mi solución natural y fácil fue escribir un código de formularios Windows Forms para iterar sobre los tipos en un ensamblaje y usar la reflexión para agregar nodos a una vista de árbol, de la siguiente manera:
suponga que tiene un cuadro de texto, una vista de árbol y otras cosas necesarias en un formulario en el que se ejecuta este código
fuente
AppDomain.CurrentDomain.GetAssemblies()
? Eche un vistazo a esto: stackoverflow.com/questions/851248/…A partir de 'Visual Studio 2015 Update 1', simplemente puede hacer clic con el botón derecho en el nombre de una clase en el editor de código de clase y luego seleccionar 'Ir a implementación' en el menú contextual: con Ctrl + F12 como acceso directo.
Consulte https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ para obtener más detalles.
fuente
Nadie ha mencionado esto todavía, así que lo agregaré.
Jetbrains dotPeek es un descompilador .NET gratuito que tiene el poder de mostrar esta información fácilmente.
Descarga gratuita: http://www.jetbrains.com/decompiler/
Jetbrains es la compañía que fabrica Resharper.
Pasos para encontrar clases derivadas:
ActionResult
ActionResult
declaración de clase, haga clic derecho y seleccione 'Símbolos derivados'fuente
Asumiendo que tiene instalado Resharper : con el cursor en la clase / interfaz, haga clic derecho - Inspeccionar - Jerarquías
Esto muestra subclases, implementaciones y superclases.
fuente
En Visual Studio Class View navegue a la clase que le interesa y encuentre sus clases base y derivadas
fuente
También puedes usar Reflector .
Cargue todos los ensamblajes en los que desea que se vea, navegue hasta un tipo y expanda el elemento Tipos derivados.
También puede hacerlo en el Explorador de objetos, pero por alguna razón VS2008 solo puede hacerlo en una de las vistas de .Net Framework. (VS2010 Beta 2 puede hacerlo en cualquier vista)
fuente
Para las clases de Framework, uso la Biblioteca MSDN. La sección Jerarquía de herencia va en ambas direcciones. Sin embargo, no es de mucha ayuda para algunas bibliotecas de fiestas en 3D.
fuente
Con la ayuda de ReSharper (versión 2016.1.2) solo Ctrl+ Alt+ Clicken la Clase Base. Verás algo como esto:
fuente
Arrastre la clase o el espacio de nombres desde Object Explorer al archivo Class Digram .
¿Cómo obtener un buen diagrama de clase para las clases .net integradas?
fuente
seleccione el tipo y haga clic con el botón derecho para ver algo --- mostrar en el mapa de código --opción seleccionarlo generar la imagen para aquellos que heredan este tipo de imagen tan bonita como el formato de archivo .dgml, da mucha más información sobre el tipo
fuente
Como opción para aquellos que usan Visual Assist, también puede presionar Shift + ALT + G (mientras el cursor está en el nombre de la clase) para que aparezca el menú contextual "Ir a relacionado", y si hay clases derivadas obtendrá un submenú para eso que los enumera a todos e incluso muestra estructuras de herencia entre esas clases derivadas.
fuente
Solo codifícalo.
fuente
si actualizó a VS2012, puede usar el "Mapa de códigos".
Haga clic derecho sobre el tipo del que desea ver la jerarquía de herencia y elija "Agregar al mapa de código". Luego, en la vista de mapa de código, puede expandir los nodos y hacer clic derecho para elegir "Mostrar clases derivadas / base". Lamentablemente, no funciona para las clases proporcionadas por .NET.
fuente
Para Visual Studio 2012 ( sin ReSharper )
fuente
Actualización 2020:
Puede usar los mapas de código de Visual Studio que funcionan bastante bien.
Simplemente haga clic derecho en la clase y vaya a:
Code Map
>Show Related Items on Code Map
>Show All Derived Types
Nota:
PD: Realmente vale la pena mantener la versión Enterprise (o al menos la versión Preview) en su máquina, ya que tiene muchas herramientas realmente útiles que no están incluidas en las otras ediciones.
fuente
ActionResult
(el ejemplo del OP)Una forma muy simple de hacer esto es buscar
: Classname
en la ventana "Buscar y reemplazar" (CTRL + F) y usar la opción "Buscar opciones / Hacer coincidir palabra completa". Encontrará solo las clases heredadas.fuente
class DDerived : IInterface, BBase