У клиента есть универсальная служба, которая используется для всех различных классов для всех операций CRUD, которая вызывает разные контроллеры на сервер:
Код: Выделить всё
public async Task GetListAsync()
{
string url = apiUrl + $"/api/{typeof(Type).Name}";
string authToken = await GetAccessTokenAsync();
logger.LogInformation("Retrieving list...");
using HttpClient httpClient = GetHttpClient();
return await HttpClientHelper.GetAsync(httpClient, url, authToken);
}
...
Код: Выделить всё
public class GenericController : ControllerBase where Identity : IIdentity
{
private readonly IGenericService _service;
public GenericController(IGenericService service, ILogger logger)
{
_service = service;
this.logger = logger;
}
[AllowAnonymous]
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public virtual async Task GetList()
{
try
{
result = await _service.GetListAsync();
return Ok(result);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
}
Код: Выделить всё
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class ErrorCodeController : GenericController
{
#region Construction/destruction ...
///
/// Constructor.
///
public ErrorCodeController(IErrorCodeService service, ILogger logger)
: base(service, logger)
{
}
#endregion
}
Я гуглил о динамических контроллерах, но не нашел много информации о том, как это сделать.
Мне было бы очень полезно не создавать почти пустой класс для каждого контроллера, так как у меня много сущностей/классов, и мне нужен один контроллер для каждого из них.
Подробнее здесь: https://stackoverflow.com/questions/793 ... plement-it