gpt4 book ai didi

c# - 如何在 Orchard 中设置自定义 Controller 工厂?

转载 作者:行者123 更新时间:2023-11-30 22:12:45 25 4
gpt4 key购买 nike

那些更熟悉 Orchard CMS 的人可以帮我解决一个问题吗?我正在编写一个 Orchard 模块,我的 Controller 有构造函数参数(服务接口(interface))。

我应该在 Orchard 的哪个位置设置自定义 Controller 工厂来处理这个问题(不干扰用户安装的其他 Orchard 模块)

它是在 Global.asax 中完成的吗?我找到了

ControllerBuilder.Current.SetControllerFactory(new OrchardControllerFactory());

在 OrchardStarter.cs 中,所以我对设置其他 Controller 工厂的位置感到困惑。

是不是刚用Autofac DI做的?如果是这样,如果有人有一个简短的代码示例,那就太好了! (我是 Autofac 和 Orchard 的新手)

谢谢

最佳答案

您不应该更改 Controller 工厂。 Orchard 提供了更简单的方式来开箱即用地使用依赖注入(inject)。

最简单的方法是从 Orchard.IDependency 继承您的接口(interface)。然后 Orchard 将自动使用 Autofac 注册您的实现并将其注入(inject)到任何构造函数中。如果您需要对注册过程进行更多控制,那么您可以创建一个 Autofac 模块并在那里注册您的服务。 Orchard 还应该自动选取该模块并将其添加到依赖项注入(inject)容器中。

例如,如果您创建一个接口(interface):

using Orchard;

public interface IFoo : IDependency {
...
}

并创建接口(interface)的实现:

public class Foo : IFoo {
...
}

然后 Orchard 会自动注入(inject)一个 Foo 实例到任何定义了 IFoo 类型参数的构造函数。

关于c# - 如何在 Orchard 中设置自定义 Controller 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com