Inheritance 如何在基本web api控制器中提供可通过属性路由访问的方法

Inheritance 如何在基本web api控制器中提供可通过属性路由访问的方法,inheritance,asp.net-web-api,routing,Inheritance,Asp.net Web Api,Routing,基类: public class DataApiControllerBase<T> : ApiController { public List<ValidationResult> Validate(T input) { ... } } 公共类DataApicController数据库:ApicController { 公共列表验证(T输入) { ... } } 派生类: publ

基类:

public class DataApiControllerBase<T> : ApiController
    {
        public List<ValidationResult> Validate(T input)
        {
            ...

        }
    }
公共类DataApicController数据库:ApicController
{
公共列表验证(T输入)
{
...
}
}
派生类:

public class CustomerController: DataApiControllerBase<Customer>
    {
        [Route("api/customer/{id}")]
        public Customer Get([FromUri] Guid id)
       {

       }

    }
公共类CustomerController:DataApicController数据库
{
[路由(“api/customer/{id}”)]
公共客户获取([FromUri]Guid id)
{
}
}

路由解析为什么,以便在每个派生控制器端点上获得“验证”端点?这是正确的方法吗?

我想你可以用方法重写来解决这个问题

基类

public class DataApiControllerBase<T> : ApiController
{
    public virtual List<ValidationResult> Validate(T input)
    {
        ...

    }
}
public class CustomerController: DataApiControllerBase<Customer>
{
    Route("api/customer/validate")]
    [HttpPost]
    public override List<ValidationResult> Validate(Customer input)
    {
        base.Validate(input);
    }

   Route("api/customer/{id}")]
   public Customer Get([FromUri] Guid id)
   {

   }
}   
公共类DataApicController数据库:ApicController
{
公共虚拟列表验证(T输入)
{
...
}
}
派生类

public class DataApiControllerBase<T> : ApiController
{
    public virtual List<ValidationResult> Validate(T input)
    {
        ...

    }
}
public class CustomerController: DataApiControllerBase<Customer>
{
    Route("api/customer/validate")]
    [HttpPost]
    public override List<ValidationResult> Validate(Customer input)
    {
        base.Validate(input);
    }

   Route("api/customer/{id}")]
   public Customer Get([FromUri] Guid id)
   {

   }
}   
公共类CustomerController:DataApicController数据库
{
路线(“api/客户/验证”)]
[HttpPost]
公共覆盖列表验证(客户输入)
{
验证(输入);
}
路由(“api/customer/{id}”)]
公共客户获取([FromUri]Guid id)
{
}
}