2017-10-01 13 views
0

こんにちは私はアクションコントローラを実行するための特定の権限を持っている場合、このフィルタ属性は、フィルタ属性を追加するだけのベースコントローラから継承したアクションコントローラをオーバーライドする方法があるのだろうか?ベースコントローラ。ベースコントローラasp.net c#から継承したアクションコントローラをオーバーライドするにはどうすればよいですか?

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 class ArbitrosController : BaseController<Arbitro> 
{ 


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

    } 

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

    } 

} 

答えて

1

使用virtualベースクラスのキーワードや子孫でoverride

ここ
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(); 
    } 
} 

は、C#での継承についてtutorialです:オーバーライドから基底クラスにアクセスするには、baseキーワードを使用することができます。

+0

本当にありがとうございました。 – Brandon

関連する問題