GetType()
все еще будет работать здесь и не является virtual
(что ограничивает количество проблем, которые вы можете получить в неинициализированных полях, что является проблемой при вызове virtual
методов из конструктора); Вы всегда можете исследовать дерево, если задействовано несколько типов:
public Parent()
{
var type = GetType();
while (type != typeof(Parent) && type != null)
{
Console.WriteLine(type.Name);
type = type.BaseType;
}
}
Если у нас есть:
class Child3 : Child2
{
public Child3(string surname) : base(surname) { }
}
// ...
new Child3("whatever");
Тогда будет выведено:
Child3
Child2