Предыстория: Я хотел распространять библиотеку для некоторых других разработчиков (что-то вроде строк SDK или инструментария, абстрагировавших некоторые внутренние веб-сервисы). Я использую Autofac, чтобы внедрять различные версии базовых сервисов, в основном для stubbing. Я хочу распространять эту сборку для широкого круга разработчиков: пользователей, которые понимают IoC, и пользователей, которые этого не делают.Имеет ли Autofac наилучшую практику для * необязательной конфигурации Xml?
Для любых опытных разработчиков они могут создавать свои собственные реализации, которые нужно вводить. В противном случае разработчик должен иметь возможность использовать сборку без конфигурации и никогда не знать или не заботиться о том, что IoC происходит под капотом.
Fun stuff: Я могу предоставить Xml-конфигурацию Autofac, или я могу программно настроить компоненты (последний предпочтительный метод). В этом случае я не буду знать, что было настроено до времени выполнения, следовательно, появилась необходимость в конфигурации Xml. Есть ли способ заставить Autofac использовать конфигурацию Xml, если она существует, иначе игнорировать ее, если она не была предоставлена?
Примечание: I может осуществить это вручную, проверив конфигурацию для конкретного раздела («autofac»); если его нет, то не называйте
builder.RegisterModule(new ConfigurationSettingsReader());
Есть ли лучший способ сделать это, чем проверки конфигурации вручную (желательно что-то магическое, скрытый в Autofac, как кажется, чтобы быть в состоянии сделать все, что вы спросите о ! это)
Он ломается без конфигурации. Вы получаете исключение аргумента. «Конфигурационный раздел« XXX »не может быть прочитан», поэтому вопрос. –
На самом деле я задаюсь вопросом, предпочитаете ли вы использовать MEF или какой-либо другой механизм регистрации, чтобы позволить пользователям расширять вашу библиотеку. – Min
Просто примечание в ретроспективе: мы закончили тем, что отказались от этой части. IoC оказался слишком далеко досягаемым для нашей аудитории. Если мы в конечном итоге сделаем что-то подобное, вы правы. MEF определенно будет солидным подходом здесь , –