我有幾個類繼承的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