2009-09-03 16 views
18

Estoy solucionando un problema al manejar un evento de mouse en una clase base. Como los puntos de interrupción en realidad no funcionan bien para la resolución de problemas de los eventos del mouse, quiero agregar algunos resultados de depuración en el controlador de eventos. Sin embargo, es importante para mí incluir el nombre de la clase derivada real en la información de depuración ya que el código de manejo de eventos en la clase base es compartido por una gran cantidad de clases derivadas y solo algunas muestran el problema.C# Obtener el nombre del tipo derivado de la clase base interna

Intenté usar this.GetType().Name pero esto simplemente devuelve el tipo de la clase base. Puedo, por supuesto, empezar a modificar las clases y, por ejemplo, pasar la clase derivada type al constructor de la clase base donde puede almacenarla, pero se trata de una gran cantidad de cambios para lo que obviamente es solo una necesidad temporal. ¿Hay una manera simple de obtener el tipo de la clase derivada dentro de la clase base?

Respuesta

31

this.GetType().Name debería funcionar. Puede que no tenga una clase derivada.

8

this.GetType().Name siempre devuelven el nombre del tipo de ejecución actual, no el tipo que el código que fue escrito en Usted puede emular los puntos de interrupción sin embargo, el uso de Debugger.Break() de manera condicional:.

if (this.GetType().Name == "Problematic type") 
    System.Diagnostics.Debugger.Break(); 
1

Cuando levantando una evento, asegúrese de pasar el remitente real a la propiedad del remitente. El objeto remitente en la clase de escucha debería apuntar correctamente a la clase secundaria que generó el evento.

Cuestiones relacionadas