Все довольно просто - посмотрите на источник, как это делается с ILogger
интерфейсами, и сделайте то же самое для IOrchardServices
. Исходный файл - Orchard.Framework / Logging / LoggingModule.cs . Я думаю, это именно то, что вы ищете.
Все делается через модуль Autofac (реализация класса Autofac.Module
). Что делает этот класс, так это:
- регистрирует реализацию
ILogger
интерфейсов (метод Load
) и
- получить свойства обработанного объекта и установить соответствующие свойства для объекта, разрешенного из контейнера (метод
AttachToComponentRegistration
).
Довольно просто. Модули Autofac - хороший способ подключиться к процессу DI.
Было бы достаточно просто скопировать этот исходный файл в свой пользовательский модуль Orchard и изменить ILogger
на IOrchardServices
(и, конечно, зарегистрированный класс). Класс, который я упомянул, использует фабричный шаблон для создания экземпляров, но вы можете изменить его на простое создание объекта с помощью new и избавиться от фабричных вещей.