Ich habe ein paar KlassenInherited Web API API-Controller
Square : Rectangle : Shape (abstract)
und ich habe eine Basissteuerung von ApiController vererben, die ich verwenden möchten.
public abstract class BaseController<T> : ApiController where T : class
{
public abstract IEnumerable<T> Get()
...
}
und
public class DerivedController : BaseController<Rectangle>
{
public override IEnumerable<Rectangle> Get()
...
}
public class AnotherDerivedController : BaseController<Square>
{
public new IEnumerable<Square> Get()
...
}
/api/Rechteck rufen richtig IEnumerable<Rectangle> Get()
/api/Quadrat gibt mir eine Fehlermeldung:
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
Wenn ich public new IEnumerable<Square> Get()
zu public override IEnumerable<Square> Get()
ändern , Bekomme ich einen Kompilierfehler seit der Rückkehr n Signaturen sind unterschiedlich
Wie bekomme ich meinen Code, um die richtige Methode aufzurufen? Ist es notwendig, die Methoden jeder Klasse explizit in RegisterRoutes zu registrieren?
Hallo Aliostad, ich habe meine Frage aktualisiert, um Ihre Änderungen zu reflektieren. Ich habe immer noch Probleme, aber Ihre Vorschläge waren hilfreich für mich. Vielen Dank. – khaihon