Как я могу заставить базовый конструктор вызываться в С#?

У меня есть класс BasePage, из которого происходят все остальные страницы:

public class BasePage

В этом BasePage есть конструктор, содержащий код, который должен всегда запускаться:

public BasePage()
{
    // Important code here
}

Я хочу заставить производные классы вызвать базовый конструктор, например:

public MyPage
    : base()
{
    // Page specific code here
}

Как я могу применить это (желательно во время компиляции)?

Ответ 1

Базовый конструктор всегда будет вызываться в некоторой точке. Если вы вызываете this(...) вместо base(...), то это вызывает другой конструктор в том же классе, который снова должен будет либо вызвать еще один конструктор брата или родительский конструктор. Рано или поздно вы всегда будете обращаться к конструктору, который либо вызывает base(...) явно, либо неявно вызывает конструктор без параметров базового класса.

Подробнее о цепочке конструкторов см. в этой статье, включая точки выполнения различных битов (например, инициализаторы переменных).

Ответ 2

Конструктор базового класса, не принимающий аргументов, автоматически запускается, если вы не вызываете какой-либо другой конструктор базового класса, явно принимающий аргументы.

Ответ 3

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

Ответ 4

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

Изменить: перефразировать для ясности.