2009-09-03 8 views
18

Je suis en train de résoudre un problème de gestion d'un événement de souris dans une classe de base. Étant donné que les points d'arrêt ne fonctionnent pas vraiment bien pour le dépannage des événements de la souris, je souhaite ajouter une sortie de débogage dans le gestionnaire d'événements. Cependant, il est important pour moi d'inclure le nom de la classe dérivée réelle dans les informations de déboguage car le code de gestion des événements de la classe de base est partagé par un grand nombre de classes dérivées et seules certaines présentent le problème. J'ai essayé d'utiliser this.GetType().Name mais cela retourne simplement le type de la classe base. Je peux, bien sûr, commencer à modifier les classes et, par exemple, passer la classe dérivée type au constructeur de la classe de base où il peut le stocker, mais c'est beaucoup de changements pour ce qui est évidemment un besoin temporaire. Existe-t-il un moyen simple d'obtenir le type de la classe dérivée à partir de la classe de base?C# Obtenir le nom du type dérivé à partir de la classe de base interne Classe

Répondre

31

this.GetType().Name devrait fonctionner. Vous ne pouvez pas avoir de classe dérivée.

8

this.GetType().Name reviennent toujours le nom du type exécution en cours, pas le type que le code qu'il a été écrit en vous pouvez émuler des points d'arrêt si, en utilisant Debugger.Break() de manière conditionnelle.

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

Lorsque vous soulevez un assurez-vous de transmettre l'expéditeur réel à la propriété de l'expéditeur. L'objet émetteur de la classe d'écoute doit pointer correctement vers la classe enfant qui a déclenché l'événement.

Questions connexes