У меня есть класс, который сначала нужно вызвать конструктор производного класса, прежде чем он вызовет базовый конструктор. Я знаю, что в следующем коде базовый конструктор будет называться первым:Обратный порядок вызовов конструктора путем наследования конструктора
public class A {
protected A() {
//do something
}
}
public class B : A {
public B() : base() {
//do something else
}
}
Является ли их способ изменить этот порядок, или обходной путь для этого? Одно из возможных решений, в котором мы создаем дополнительный защищенный метод в базовом классе, например doConstructor(), и вызываем его в производном конструкторе после того, как первая задача невозможна с полями readonly, потому что компилятор не примет ее.
Шаблон метода шаблона – abhilash
Похоже, вы читаете код с моего экрана; o) Мы должны знать, что обычно вызывающим виртуальным членам от конструкторов рекомендуется избегать. –
Вызов виртуальных методов в базовом-конструкторе ('A') немного опасен; Теперь переопределение 'B' выполняется ** перед ** конструктором' B', что может привести к проблемам с неинициализированными полями. Я бы вообще посоветовал здесь осторожность или лучше: ** post ** - ctor 'Initialize'. –