Я заметил, что один из аргументов против использования CSL является ложным, потому что разработчики считают, что эта библиотека способна выполнять только шаблон Service Locator. Однако это не так, потому что его легко использовать с шаблоном Dependency Injection.
Однако библиотека CSL была специально разработана для разработчиков инфраструктуры, которым необходимо разрешать пользователям регистрировать зависимости. Поскольку библиотека будет вызывать CSL напрямую, с точки зрения платформы мы говорим о шаблоне SL, отсюда и его имя.
Однако, как разработчик фреймворка, не следует воспринимать зависимость от CSL. Для удобства использования вашей среды обычно лучше иметь собственный механизм DI. Очень распространенным механизмом является установка зависимостей в файле конфигурации. Этот шаблон используется во всей платформе .NET. Почти каждая зависимость может быть заменена на другую. Шаблон поставщика .NET построен поверх этого.
Когда вы как разработчик фреймворка берете зависимость от CSL, пользователям будет сложнее использовать ваше приложение. Пользователи должны будут настроить контейнер IoC и подключить его к CSL. Однако для платформы невозможно проверить конфигурацию, как это можно сделать при использовании системы конфигурации .NET, которая поддерживает все виды проверки в ней.