У меня есть несколько классовНаследуется 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()
...
}
/апи/прямоугольник будет правильно называть IEnumerable<Rectangle> Get()
/апи/квадрат дает мне ошибку:
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()
, Я получаю ошибку времени компиляции, так как retur n подписи различны
Как мне получить код для вызова надлежащего метода? Нужно ли явно регистрировать методы каждого класса в RegisterRoutes?
Привет, Aliostad, я обновил свой вопрос, чтобы отразить ваши изменения. У меня все еще есть проблемы, но ваши предложения были полезны для меня. Благодарю. – khaihon