C#在子构造函数中获取继承的变量(在“OnActionExecuting”中初始化)值

时间:2013-10-24 12:46:11

标签: c# inheritance constructor controller onactionexecuting

我有一个父类classA,其变量定义为public string variable。此变量var在定义为OnActionExecuting的{​​{1}}方法中初始化。子类从此类继承为protected override void OnActionExecuting(ActionExecutingContext test)但是,下面的代码失败

public class classB : classA

即,变量var为null。但是,如果我在classA中声明一个公共变量variable2并在运行public class classB : classA{ string h; public classB(){ h = this.variable } } 初始化它,我可以在控制器中检索它。如何编辑此代码,以便可以在继承类的构造函数中访问public string variable2 = "test"中发生的初始化?

2 个答案:

答案 0 :(得分:1)

OnActionExecuting很可能未在classA的构造函数中调用,这意味着由创建classB的新实例的人调用。因此,在构造函数运行完成后,它将仅被调用

所以,你要求的是不可能的。

想一想:
订购之前,你不能吃披萨

答案 1 :(得分:1)

在构造函数之后调用 OnActionExecuting,因此:无法获取尚未发生的内容的值

如果继承类需要一个仅在基类型的OnActionExecuting方法触发时才可用的值,那么: 然后访问它

protected override void OnActionExecuting(ActionExecutingContext ctx)
{
    base.OnActionExecuting(ctx);
    h = this.var;
}