如何在Orchard中设置自定义控制器工厂?

时间:2013-10-23 11:49:50

标签: c# asp.net-mvc dependency-injection orchardcms controller-factory

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

在Orchard中,我设置了一个自定义控制器工厂来处理这个问题(不会干扰用户安装的其他Orchard模块)

是否在Global.asax中完成了某些事情?我找到了

ControllerBuilder.Current.SetControllerFactory(new OrchardControllerFactory());
在OrchardStarter.cs中的

所以我对任何其他控制器工厂的设置感到困惑。

刚刚使用Autofac DI完成了吗?如果是这样,如果有人有一个很短的代码样本,那就太棒了! (我是Autofac和Orchard的新手)

由于

1 个答案:

答案 0 :(得分:3)

您不应更改控制器工厂。 Orchard提供了更简单的方法来开箱即用的依赖注入。

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

例如,如果您创建一个界面:

using Orchard;

public interface IFoo : IDependency {
    ...
}

创建界面实现:

public class Foo : IFoo {
    ...
}

然后,Orchard会自动将Foo实例注入任何定义IFoo类型参数的构造函数。