Иногда мы можем удалить несколько условий if-else из кода, если мы уже знаем, какую логическую ветвь следует использовать на этапе запуска запуска.

В таком случае мы можем создать интерфейс для выполнения этой логики и несколько классов для реализации этого интерфейса для разных условий. Например, наши условия, приводящие к разной логике, описаны в файле appsettings.json.

Итак, уже на этапе Startup мы можем понять, какую реализацию будем использовать, и задать, какой класс должен быть разрешен для интерфейса.

Что касается перемещения большего количества условных операторов в инициализацию нашего приложения, мы уменьшаем его сложность и согласованность.