C# 从泛型控制器重写单个方法
我有一个抽象类C# 从泛型控制器重写单个方法,c#,generics,overriding,C#,Generics,Overriding,我有一个抽象类 public abstract class BaseController<T,K> : ApiController { //several methods [Route("{id:int}")] public HttpResponseMessage Put(int id, [FromBody]T item) { //updates the item } } 但它抛出错误:找到了多个与请求匹配的操作 如何重写该方法 ---编辑---- 这
public abstract class BaseController<T,K> : ApiController
{
//several methods
[Route("{id:int}")]
public HttpResponseMessage Put(int id, [FromBody]T item)
{
//updates the item
}
}
但它抛出错误:找到了多个与请求匹配的操作
如何重写该方法
---编辑----
这是我的网页
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
---编辑---
添加了
[Route(“{id:int}”)]
将Route属性从覆盖中移除。即基于id:int路由和主体的数据类型生成两个相同的路由。由于多态性,重写仍将代替基本方法执行。您确定路由正确吗?我怀疑您的路线没有正确指定控制器。已使用路线更新问题
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}