我有一个基本的AsyncController
BaseController : AsyncController
{
[Authorize("Admin")]
public virtual async Task<ActionResult> SomeMethod()
{
//code
}
}如何正确继承和重写SomeMethod
UserController : BaseController
{
[Authorize("User")]
public override Task<ActionResult> SomeMethod()
{
return base.SomeMethod()
}
}或
UserController : BaseController
{
[Authorize("User")]
public override async Task<ActionResult> SomeMethod()
{
return await base.SomeMethod()
}
}抱歉,我的英语
发布于 2016-08-07 14:53:18
SomeMethod()是在BaseController类中定义的。因此,子类应该继承BaseController而不是AsyncController。若要重写该方法,只需在定义中添加virtual关键字即可。
BaseController : AsyncController
{
[Authorize("Admin")]
public virtual async Task<ActionResult> SomeMethod()
{
//code
}
}继承和覆盖
UserController : BaseController
{
[Authorize("User")]
public override Task<ActionResult> SomeMethod()
{
return base.SomeMethod()
}
}此外,我在Authorize属性中注意到了一些奇怪的东西。如果基方法只允许管理,而子方法只允许用户使用,那么您很可能最终无法从子类执行基方法。
https://stackoverflow.com/questions/38808098
复制相似问题