首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsyncController中的动作继承

AsyncController中的动作继承
EN

Stack Overflow用户
提问于 2016-08-06 19:40:01
回答 1查看 141关注 0票数 0

我有一个基本的AsyncController

代码语言:javascript
复制
BaseController : AsyncController
{ 
    [Authorize("Admin")]
    public virtual async Task<ActionResult> SomeMethod()
    {
        //code
    }
}

如何正确继承和重写SomeMethod

代码语言:javascript
复制
UserController : BaseController
{ 
    [Authorize("User")]
    public override Task<ActionResult> SomeMethod()
    {
        return base.SomeMethod()
    }
}

代码语言:javascript
复制
UserController : BaseController
{ 
    [Authorize("User")]
    public override async Task<ActionResult> SomeMethod()
    {
        return await base.SomeMethod()
    }
}

抱歉,我的英语

EN

回答 1

Stack Overflow用户

发布于 2016-08-07 14:53:18

SomeMethod()是在BaseController类中定义的。因此,子类应该继承BaseController而不是AsyncController。若要重写该方法,只需在定义中添加virtual关键字即可。

代码语言:javascript
复制
BaseController : AsyncController
{ 
    [Authorize("Admin")]
    public virtual async Task<ActionResult> SomeMethod()
    {
        //code
    }
}

继承和覆盖

代码语言:javascript
复制
UserController : BaseController
{ 
    [Authorize("User")]
    public override Task<ActionResult> SomeMethod()
    {
        return base.SomeMethod()
    }
}

此外,我在Authorize属性中注意到了一些奇怪的东西。如果基方法只允许管理,而子方法只允许用户使用,那么您很可能最终无法从子类执行基方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38808098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档