Как я могу заставить базовый конструктор вызываться в С#?
У меня есть класс BasePage, из которого происходят все остальные страницы:
public class BasePage
В этом BasePage есть конструктор, содержащий код, который должен всегда запускаться:
public BasePage()
{
// Important code here
}
Я хочу заставить производные классы вызвать базовый конструктор, например:
public MyPage
: base()
{
// Page specific code here
}
Как я могу применить это (желательно во время компиляции)?
Ответы
Ответ 1
Базовый конструктор всегда будет вызываться в некоторой точке. Если вы вызываете this(...)
вместо base(...)
, то это вызывает другой конструктор в том же классе, который снова должен будет либо вызвать еще один конструктор брата или родительский конструктор. Рано или поздно вы всегда будете обращаться к конструктору, который либо вызывает base(...)
явно, либо неявно вызывает конструктор без параметров базового класса.
Подробнее о цепочке конструкторов см. в этой статье, включая точки выполнения различных битов (например, инициализаторы переменных).
Ответ 2
Конструктор базового класса, не принимающий аргументов, автоматически запускается, если вы не вызываете какой-либо другой конструктор базового класса, явно принимающий аргументы.
Ответ 3
Конструктор базового класса всегда вызывается, даже если вы его явно не называете. Поэтому вам не нужно делать какую-либо дополнительную работу, чтобы убедиться, что это происходит.
Ответ 4
Один из базовых конструкторов всегда нужно вызывать, а по умолчанию вызывается, когда базовый конструктор явно не указан.
Изменить: перефразировать для ясности.