我有几个类继承的Web API API控制器
Square : Rectangle : Shape (abstract)
,我有一个基本的控制器从我想使用ApiController继承。
public abstract class BaseController<T> : ApiController where T : class
{
public abstract IEnumerable<T> Get()
...
}
和
public class DerivedController : BaseController<Rectangle>
{
public override IEnumerable<Rectangle> Get()
...
}
public class AnotherDerivedController : BaseController<Square>
{
public new IEnumerable<Square> Get()
...
}
/API /矩形将正确地调用IEnumerable<Rectangle> Get()
/API /平方米会给我一个错误:
Multiple actions were found that match the request:
System.Linq.IEnumerable`1[Square] Get() on type Web.Api.Controllers.AnotherDerivedController
System.Linq.IEnumerable`1[Rectangle] Get() on type Web.Api.Controllers.DerivedController
如果我改变public new IEnumerable<Square> Get()
到public override IEnumerable<Square> Get()
,自返回以来,我收到编译时错误n个签名不同
如何让我的代码调用正确的方法?是否有必要在RegisterRoutes中明确注册每个类的方法?
嗨Aliusad,我更新了我的问题,以反映您的更改。我在这里仍然遇到一些问题,但你的建议对我有帮助。谢谢。 – khaihon 2012-04-19 00:04:05