C# Получение значения унаследованных переменных (инициализируется в "OnActionExecuting") в дочернем конструкторе
У меня есть родительский класс classA с переменной, определенной как public string variable
, Эта переменная var инициализируется в OnActionExecuting
метод определяется как protected override void OnActionExecuting(ActionExecutingContext test)
Дочерний класс наследует от этого класса как public class classB : classA
Однако приведенный ниже код не работает
public class classB : classA{
string h;
public classB(){
h = this.variable
}
}
То есть переменная var равна нулю. Однако, если я объявлю публичную переменную variable2 в classA и инициализирую ее на лету public string variable2 = "test"
Я могу получить его в контроллере. Как я могу отредактировать этот код так, чтобы инициализация происходила в OnActionExecuting
можно получить доступ в конструкторе наследующих классов?
2 ответа
OnActionExecuting
вызывается после конструктора, поэтому: нет способа получить значение того, что еще не произошло.
Если наследующему классу нужно значение, которое доступно только тогда, когда базовый тип OnActionExecuting
метод сработал, затем: доступ к нему затем:
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
base.OnActionExecuting(ctx);
h = this.var;
}
OnActionExecuting
скорее всего не вызывается в конструкторе classA
Это означает, что вызывается тем, кто создает новый экземпляр classB
, Как таковой, он будет вызываться только после запуска конструктора до его завершения.
Итак, то, что вы просите, невозможно.
Думаю об этом:
Вы не можете съесть свою пиццу, прежде чем заказать ее.