Я хочу выделить сущность ответа сервиса чтобы ее передавать в контроллер, а затем делать из нее объект IActionResult, но не могу понять как сделать второе
Вот сам класс сущности ответа:
namespace OnlineStore.Domain.Response
{
public class BaseResponse<T> : IBaseResponse<T>
{
public string Description { get; set; }
public StatusCode StatusCode { get; set; }
public T Data { get; set;}
}
public interface IBaseResponse<T>
{
T Data { get; set; }
}
}
где StatusCode у меня ялвяется Enum такого вида(потом он станет больше):
namespace OnlineStore.Domain.Enum
{
public enum StatusCode
{
OK = 200,
NotContent=204,
InternalServerError = 500
}
}
И методы сервиса у меня бы работали примерно таким образом:
public async Task<IBaseResponse<Product>> GetProductById(int id) {
var response = new BaseResponse<Product>();
try
{
var product = await _productRepository.GetById(id);
if (product == null)
{
response.Description = $"There is no product with this id: {id}";
response.StatusCode = StatusCode.NotContent;
return response;
}
response.Data = product;
return response;
}
catch (Exception ex)
{
return new BaseResponse<Product>()
{
Description = $"[GetProducts]: {ex.Message}",
StatusCode = StatusCode.InternalServerError
};
}
}
И вот я хочу чтобы все сервисы возвращали в контроллер объект IBaseResponse и потом я просто создавал объект IActionResult, данные для которого я бы брал из этого объекта.Как мне реализовать метод, который будет брать IBaseResponse и возвращать IActionResult беря данные из объекта вернувшегося из сервиса. Объясните мне как лучше реализовывать такие вещи например в слоистой архитектуре приложения или как еще можно