Как правильно организовать (пользовательский) Сервис: DTO, включить и обработку исключений?C#

Место общения программистов C#
Anonymous
Как правильно организовать (пользовательский) Сервис: DTO, включить и обработку исключений?

Сообщение Anonymous »

Для контекста: я использую Mapster и Serilog. < /p>

Код: Выделить всё

public class UserService(IUserRepository repository, ILogger logger)
{
public async Task GetByIdAsync(int userId, Func? include = null,
CancellationToken cancellationToken = default)
{
try
{
var entity = await repository.GetByIdAsync(userId, include, cancellationToken);

return entity is null ? default : entity.Adapt();
}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return default;
}
}

public async Task GetByNameAsync(string name,
CancellationToken cancellationToken = default)
{
try
{
var entities = await repository.GetByNameAlnumAsync(name, cancellationToken);

return entities.Adapt();
}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return [];
}
}

public async Task GetByFilterAsync(Filter filter,
CancellationToken cancellationToken = default)
{
try
{
var entities = await repository.GetByFilterAsync(filter, cancellationToken);

return entities.Adapt();

}
catch (OracleException ex) when (ex.Number == 1013)
{
logger.Information("The request was cancelled.");
return [];
}
}
}
Вопросы :
  • Я использую tdto правильно?
  • include аргумент в метод GetByIdasync нарушает SRP. Допустим, пользователь имеет много внешних зависимостей, и они используются по -разному везде. Для каждого использования сделайте метод, который отличается от многих подобных с помощью другого набора .include () ? Объект результата? Как насчет повторяемости? Я не должен делать метод в этой службе, который будет обрабатывать исключение , верно? Служба обработчика? Какая информация должна быть передана?


Подробнее здесь: https://stackoverflow.com/questions/794 ... n-handling

Вернуться в «C#»