私はいくつかのクラスを持っています
Square : Rectangle : Shape (abstract)
そして、使用したい ApiController から継承する Base Controller があります。
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/rectangle が適切に呼び出されますIEnumerable<Rectangle> Get()
/api/square でエラーが表示されます:
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()
、リターン シグネチャが異なるため、コンパイル時エラーが発生します。
コードで適切なメソッドを呼び出すにはどうすればよいですか? 各クラスのメソッドを RegisterRoutes に明示的に登録する必要がありますか?