我有一个BaseController
类,我的所有控制器都继承自该类。它有一个重写的ExecuteCore
方法,该方法执行(几乎)所有控制器及其操作所需的一些初始设置。
protected override void ExecuteCore()
{
SetUpMethod1();
SetUpMethod2();
base.ExecuteCore();
}
protected virtual void SetUpMethod1()
{
//some initialization stuff
}
protected virtual void SetUpMethod2()
{
//some other initialization stuff
}
在某些控制器需要一些不同行为的情况下,很容易覆盖控制器中的相关方法,并且效果很好。但是,来自不同控制器的某些操作需要在设置方法中有所不同。
我想出了
protected virtual void SetUpMethod1()
{
string controller = (string)ControllerContext.RouteData.Values["controller"]);
string action = (string)ControllerContext.RouteData.Values["action"]);
if (controller/account combination is in a list)
//special setup
else
//regular setup
}
我无法摆脱我做错了什么的感觉。有没有更好/正确的方法来获得这种行为?