В настоящее время я пытаюсь получить наследование в WebApi, как хотелось бы. Возможно, вы можете указать мне в правильном направлении?Asp.Net WebApi Inheritance с BaseController
Моя цель - создать общий проект WebApi, который может быть повторно использован в нескольких других проектах WebApi.
Например: у меня есть многопользовательский UserController, который может обрабатывать логин для нескольких веб-сайтов. Теперь я создаю новый WebSite и просто добавляю UserController к вновь созданному проекту, который просто работает.
Но теперь требуется изменение нового WebSite, и мне нужно перегрузить методы UserController, чтобы отразить эти изменения, не изменяя общий контроллер.
То, что я хочу, чтобы достичь можно увидеть в следующем фрагменте кода (конечно, это не будет компилироваться, так как C# жалуется не подходящий метод перегружать Found.)
// This belongs to solution "GenericWebApi"
public class LoginRequest
{
public string User { get; set; }
}
public class BaseApiController : ApiController
{
[Route("login")]
public virtual HttpResponseMessage Login(LoginRequest request)
{
return new HttpResponseMessage();
}
}
// This belongs to solution "CarWebsite"
public class CarWebsiteLoginRequest : LoginRequest
{
public string Car { get; set; }
}
[RoutePrefix("api/users")]
public class CarWebsiteApiController : BaseApiController
{
public override HttpResponseMessage Login(CarWebsiteLoginRequest request)
{
// Do some car specific login stuff
return base.Login(request);
}
}
Одно решение, которое я нашел, чтобы работать заменил «LoginRequest» и «CarWebsiteLoginRequest» на «динамический», но это просто неправильно, и ModelBinder, конечно, не будет работать так, как предполагалось.
Любые идеи, как вы могли бы решить это?
Заранее спасибо
Спасибо за ваши предложения, это, кажется, хороший способ. Но мой BaseApiController имел бы> 10-15 действий WebApi. Поэтому мне нужно будет сделать это BaseApiController. Есть ли другой способ узнать? –
coalmee