asp.net - 如何让 Autofac 在 Orchard CMS 中执行属性注入(inject)

标签 asp.net asp.net-mvc-3 dependency-injection autofac orchardcms

是否可以使用 OrchardCMS 进行属性注入(inject)?

我知道 Orchard 使用 Autofac 并且 Autofac 确实进行了属性注入(inject),但我需要知道如何为 IOrchardServices 接口(interface)进行属性注入(inject)。

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

有了这个,我们需要一种方法来访问 OrchardServices 对象。我在想这是我必须自己提出来的事情。 有没有人有任何在 Orchard 执行属性注入(inject)的好例子?

最佳答案

这很简单 - 查看源代码是如何使用 ILogger 完成的接口(interface)并对 IOrchardServices 执行相同操作.源文件是 Orchard.Framework/Logging/LoggingModule.cs .我猜这正是你要找的东西。
一切都通过 Autofac 模块完成(Autofac.Module 类的实现)。该类(class)的作用是:

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

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

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

    关于asp.net - 如何让 Autofac 在 Orchard CMS 中执行属性注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749997/

    相关文章:

    c# - 使用隐藏的站点地图节点来控制访问

    javascript - 使用存储过程按需加载 JSTree

    Angular 7 - 注入(inject)的服务始终为空

    asp.net - 在 ASP.NET 中使用没有登录控件的自定义成员资格提供程序

    asp.net - 如何使用 GridView 中的控件在 ModalPopupExtender 中设置 TargetControlID

    c# - 初始化 Nlog 事件日志目标时出现安全异常

    asp.net-mvc-3 - MVC3 删除 ModelState 错误

    asp.net-mvc - 与 MVC3 和 ASP.NET4.5 异步

    javascript - 如何创建可重用的 Socket.IO 模块

    php - Laravel:为什么在实例化其提供的类时不调用已注册的服务提供者?