2009-09-03 7 views
18

Я искал проблему при обработке события мыши в базовом классе. Поскольку точки останова на самом деле не работают хорошо для устранения неполадок мыши, я хочу добавить выходной отладчик в обработчик событий. Тем не менее, для меня важно включить имя фактического производного класса в информацию об отладке, поскольку код обработки событий в базовом классе разделяется большим количеством производных классов, и только некоторые из них обнаруживают проблему.C# Получить имя производного типа изнутри базового класса

Я пробовал использовать this.GetType().Name, но это просто возвращает тип класса base. Я могу, конечно, начать модифицировать классы и, скажем, передать производный класс type в конструктор базового класса, где он может его хранить, но это много изменений для того, что, очевидно, является лишь временной необходимостью. Есть ли простой способ получить тип производного класса из базового класса?

ответ

31

this.GetType().Name должно работать. У вас может не быть производного класса.

8

this.GetType().Name всегда возвращает имя текущего исполняющего типа, а не типа, что код, который был написан в Вы можете эмулировать контрольные точки, хотя, используя Debugger.Break() в условной манере:.

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

При привлечении событие, обязательно передайте реальному отправителю свойство отправителя. Объект отправителя в классе прослушивания должен правильно указывать на дочерний класс, который поднял событие.

Смежные вопросы