如何使Autofac在Orchard CMS中执行属性注入

dev*_*oug 6 asp.net dependency-injection autofac orchardcms asp.net-mvc-3

是否可以使用OrchardCMS进行房产注入?

我知道Orchard使用Autofac并且Autofac会执行属性注入,但我需要知道如何为IOrchardServices接口执行属性注入.

我们的团队正在研究Orchard,但我们的代码库都在ASP.NET 4.0 WebForms中,因此我们将继续提供aspx页面,并在时间允许的情况下将这些页面慢慢迁移到Orchard.

有了它,我们需要一种方法来访问OrchardServices对象.我认为这是我必须自己提出来的.有没有人在Orchard中进行过属性注射的好例子?

Pio*_*myd 3

这非常简单 - 查看源代码是如何使用ILogger接口完成的,并对IOrchardServices. 源文件是Orchard.Framework/Logging/LoggingModule.cs。我想这正是您正在寻找的。
一切都是通过 Autofac 模块(类的实现)完成的Autofac.Module。该类的作用是:

  • ILogger注册接口(Load方法)的实现和
  • 获取已处理对象的属性,并将适当的属性设置为从容器解析的对象(AttachToComponentRegistration方法)。

很简单。Autofac 模块是插入 DI 流程的好方法。

只需将该源文件复制到您的自定义 Orchard 模块并更改ILoggerIOrchardServices(当然还有注册的类)就足够了。我提到的类使用工厂模式来创建实例,但是您可以通过new将其更改为简单的对象创建,并摆脱与工厂相关的东西。