tengo un par de clasesheredada controlador API API Web
Square : Rectangle : Shape (abstract)
y tengo un controlador base heredando de ApiController que me gustaría utilizar.
public abstract class BaseController<T> : ApiController where T : class
{
public abstract IEnumerable<T> Get()
...
}
y
public class DerivedController : BaseController<Rectangle>
{
public override IEnumerable<Rectangle> Get()
...
}
public class AnotherDerivedController : BaseController<Square>
{
public new IEnumerable<Square> Get()
...
}
/api/rectángulo llamar adecuadamente IEnumerable<Rectangle> Get()
/api/cuadrado me dará un error:
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
Si cambio public new IEnumerable<Square> Get()
a public override IEnumerable<Square> Get()
, Obtengo un error de tiempo de compilación desde el retorno n firmas son diferentes
¿Cómo obtengo mi código para llamar al método correcto? ¿Es necesario registrar explícitamente los métodos de cada clase en RegisterRoutes?
Hola Aliostad, actualicé mi pregunta para reflejar sus cambios. Todavía tengo algunos problemas aquí, pero tus sugerencias fueron útiles para mí. Gracias. – khaihon