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

Во время сеанса отладки мне важно определить имя фактического производного класса в отладочной информации конкретных экземпляров.

Я пытался использовать this.GetType().Name, но это просто возвращает тип класса base.

Есть ли простой способ получить тип производного класса из базового класса?


person Community    schedule 03.09.2009    source источник


Ответы (4)


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

person n8wrl    schedule 03.09.2009

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

if (this.GetType().Name == "Problematic type")
    System.Diagnostics.Debugger.Break();
person Cecil Has a Name    schedule 03.09.2009

Во время сеанса отладки...

Помните, что вместо того, чтобы останавливать сеанс, чтобы добавить какой-нибудь одноразовый код, а затем перекомпилировать и перезапустить, можно использовать отладчик, чтобы определить это после достижения точки останова...

Если использовать Immediate Window отладчика и ввести this.GetType().Name рядом с рассматриваемым экземпляром, а затем нажать Enter, он будет показан.

См. документы VS: немедленное окно

Есть ли простой способ получить тип производного класса из базового класса?

Да, например, я могу определить, что такое исключение, используя свойство Name для GetType и в режиме реального времени:

введите здесь описание изображения

person ΩmegaMan    schedule 18.10.2020

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

person Pierre-Alain Vigeant    schedule 03.09.2009