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, Как таковой, он будет вызываться только после запуска конструктора до его завершения.

Итак, то, что вы просите, невозможно.

Думаю об этом:
Вы не можете съесть свою пиццу, прежде чем заказать ее.

Другие вопросы по тегам