Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重写从基本控制器asp.net c#继承的操作控制器?_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

如何重写从基本控制器asp.net c#继承的操作控制器?

如何重写从基本控制器asp.net c#继承的操作控制器?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,大家好,我想知道是否有一种方法可以覆盖从基本控制器继承来的操作控制器,仅用于添加筛选器属性,此筛选器属性允许验证用户是否具有执行操作控制器的特定权限,这是我的基本控制器 public class BaseController<T> : ApiController where T : Entity<int> { private readonly IEntityService<T> _service; public BaseControll

大家好,我想知道是否有一种方法可以覆盖从基本控制器继承来的操作控制器,仅用于添加筛选器属性,此筛选器属性允许验证用户是否具有执行操作控制器的特定权限,这是我的基本控制器

public class BaseController<T> : ApiController where T : Entity<int>

{

    private readonly IEntityService<T> _service;


    public BaseController(IEntityService<T> service )
    {
        _service = service;
    }

    public BaseController()
    {

    }

    public IEnumerable<T> GetAllEntities()
    {
        return _service.GetAll();
    }



}
public类BaseController:ApiController其中T:Entity
{
私有只读客户端服务;
公共BaseController(IEntityService服务)
{
_服务=服务;
}
公共BaseController()
{
}
公共IEnumerable GetAllenties()
{
return_service.GetAll();
}
}
这是我的子控制器,我想添加filter属性注意下面的代码不正确,但我想这样做,你知道怎么做吗?谢谢你的关注

public class ArbitrosController : BaseController<Arbitro>
{


    public ArbitrosController(IArbitroService _ArbitroService):base( _ArbitroService )
    {

    }

    [HasPermission("get")]//filter atribute
    public new IEnumerable<Arbitro> GetAllEntities()
    {

    }

}
公共类仲裁控制器:BaseController
{
公共仲裁控制器(IArbitroService _仲裁服务):基础(_仲裁服务)
{
}
[HasPermission(“get”)]//过滤阿曲布他
公共新IEnumerable GetAllenties()
{
}
}

在基类中使用
virtual
关键字,在子类中使用
覆盖
。要从重写访问基类,可以使用
base
关键字:

public class BaseController<T> : ApiController where T : Entity<int>
{
    ...
    public virtual IEnumerable<T> GetAllEntities()
    {
        return _service.GetAll();
    }
}

public class ArbitrosController : BaseController<Arbitro>
{
    ...
    [HasPermission("get")]//filter atribute
    public override IEnumerable<Arbitro> GetAllEntities()
    {
       return base.GetAllEntities();
    }
}
public类BaseController:ApiController其中T:Entity
{
...
公共虚拟IEnumerable GetAllenties()
{
return_service.GetAll();
}
}

公共类ArbitrosController:BaseController关于C#中的继承。

非常感谢@andrew这正是我需要的