Подтвердить что ты не робот

С# Получить имя производного типа изнутри базового класса

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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