А ну и несколько кейсов можно объединить если что
енам юзать
в сервисах заводится пропертя Descriptor с типом какого-нибудь энама, который будет характеризовать эти сервисы создаётся фабрика, куда через DI запихивается IEnumerable<IService> всё создание нужного сервиса сводится к его поиску в IEnumerable в фабрике
а потом в кейсе установить в переменную шо за сервис тебе надо и за свичем уже вызвать нужный метод
Можно вот так await (contract.Option switch { “local” => _articlesService.Upda…, “facebook” => _facebookService.Cre… }); Думаю идея понятна
Ну это тоже все косметика
IServiceBase s = null; swich{ case: { s = _facebookService; } } await s.CreateAsync(id)
Убери асинергия и вместо брейк возвращай таску
Я бы вынес на слой бизнес логики этот код. Сейчас в текущей кодовой базе есть понятие некоторого "бизнес контроллера" когда аспнетовый анемичный и используется непосредственно для обработки реквеста, бизнес контроллер уже отвечает за такую обработку сущности и вызов соответствующих сервисов Ещё можешь упрятать в енам (если у тебя строчки с точным соответствием и меняться не будут) - об этом уже сказали От бранчинга тебе скорее всего никуда не деться, разве что играться с ним - это в любом случае либо енам либо стринга Паттернматчинг не подойдёт так как тип там должен быть определен на этапе компиляции
Да switch поменять на if
Обсуждают сегодня