Я пытаюсь использовать абстрактный базовый класс с обобщениями на ASP Net Базовом контроллере. В то время как код строится, конечные точки возвращают 404 и не появляются в документах о чванстве.
Когда я удаляю базовый класс generi c, я могу видеть контроллер в документах, но тогда мне придется скопировать и вставить несколько версий контроллера, которых я пытаюсь избежать.
Есть какие-нибудь предложения о том, чего мне не хватает?
ЭТОТ КОНТРОЛЛЕР РАБОТАЕТ
[Route("/testconcrete/employees")]
public class TestController : ControllerBase
{
private readonly IUserService<TechDevsEmployee> _userService;
public TestController(IUserService<TechDevsEmployee> userService)
{
_userService = userService;
}
[HttpGet("{userId}")]
public async Task<ActionResult<User>> GetUserById([FromRoute] Guid userId)
{
var result = await _userService.FindById(userId);
return new OkObjectResult(result);
}
}
ЭТОТ КОНТРОЛЛЕР НЕ РАБОТАЕТ (404)
[Route("/testgeneric/employees")]
public class TechDevsEmployeeController<TechDevsEmployee> : UserController<TechDevsEmployee> where TechDevsEmployee : IUser, IClientEntity
{
public TechDevsEmployeeController(IUserService<TechDevsEmployee> userService) : base(userService)
{
}
}
БАЗА КЛАСС
public abstract class UserController<T> : ControllerBase where T : IUser, IClientEntity
{
private readonly IUserService<T> _userService;
public UserController(IUserService<T> userService)
{
_userService = userService;
}
[HttpGet("{userId}")]
public async Task<ActionResult<User>> GetUserById([FromRoute] Guid userId)
{
var result = await _userService.FindById(userId);
return new OkObjectResult(result);
}
}