Я делаю собственный класс контроллера, от которого все другие классы контроллеров будут наследоваться в .Net Framework 4.8, Web API
public class BaseApiController<T> where T: class, ApiController
{
protected T service;
public BaseApiController(T service)
{
this.service = service;
}
}
Это дает ошибку времени компиляции
Ошибка CS0450 «ApiController»: невозможно указать как класс ограничения, так и ограничение «класс» или «структура»
Я знаю, что мне не хватает мелких деталей с правильным синтаксисом.
T
- это услуга, индивидуальная для каждого контроллера, и я хочу убедиться, что это всегда ссылочный тип. Я также хочу наследовать от основного ApiController
класса.
Если я делаю это так, ошибок нет (Это работает для меня):
public class BaseApiController<T> : ApiController
{
protected T service;
public BaseApiController(T service)
{
this.service = service;
}
}
Но я хочудополнительная логика T
для ссылочного типа.
Я хочу использовать его следующим образом, например:
Примечание. Вот как я его использую, и он работает.
[Authorize]
[RoutePrefix("api/[controller]")]
public class MyOtherController : BaseApiController<IMyOtherService>
{
public MyOtherController(IMyOtherService myOtherService) : base(myOtherService)
{
}
[HttpPost]
public IHttpActionResult DoSomething(Model requestModel)
{
var result = this.service.SetPaymentStatusUK(model: requestModel);
return Ok();
}
}
Я просто хочу знать, как добавить T
проверьте тип ссылки в классе BaseApiController
.