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)
{
}
}