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

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

Сообщение Anonymous »

для контекста: я использую Mapster, serilog.

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

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()
    ?
  • Как лучше всего организовать блоки Catch ?
    объект результата? Как насчет повторяемости? Я не должен делать метод
    в этой службе, который будет обрабатывать исключение < /code>, верно? Служба обработчика? Какая информация должна быть передана?


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

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