Как заставить Autofac выполнять инъекцию свойств в Orchard CMS - PullRequest
6 голосов
/ 19 июля 2011

Можно ли сделать инъекцию свойств с OrchardCMS?

Я знаю, что Orchard использует Autofac и что Autofac выполняет внедрение свойства, но мне нужно знать, как выполнить внедрение свойства для интерфейса IOrchardServices.

Наша команда изучает Orchard, но наша база кода полностью представлена ​​в веб-формах ASP.NET 4.0, поэтому мы продолжим обслуживать страницы формата aspx и медленно переносить эти страницы в Orchard, если позволяет время.

Для этого нам понадобится способ получить доступ к объекту OrchardServices.Я думаю, что это то, что я должен придумать сам. Есть ли у кого-нибудь хорошие примеры выполнения инъекции свойств в Orchard?

1 Ответ

3 голосов
/ 25 августа 2011

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

  • регистрирует реализацию ILogger интерфейсов (метод Load) и
  • получить свойства обработанного объекта и установить соответствующие свойства для объекта, разрешенного из контейнера (метод AttachToComponentRegistration).

Довольно просто. Модули Autofac - хороший способ подключиться к процессу DI.

Было бы достаточно просто скопировать этот исходный файл в свой пользовательский модуль Orchard и изменить ILogger на IOrchardServices (и, конечно, зарегистрированный класс). Класс, который я упомянул, использует фабричный шаблон для создания экземпляров, но вы можете изменить его на простое создание объекта с помощью new и избавиться от фабричных вещей.

...