那些更熟悉Orchard CMS的人可以帮我解决问题吗?我正在编写一个Orchard模块,我的控制器有构造函数参数(服务接口)。
在Orchard中,我设置了一个自定义控制器工厂来处理这个问题(不会干扰用户安装的其他Orchard模块)
是否在Global.asax中完成了某些事情?我找到了
ControllerBuilder.Current.SetControllerFactory(new OrchardControllerFactory());
在OrchardStarter.cs中的所以我对任何其他控制器工厂的设置感到困惑。
刚刚使用Autofac DI完成了吗?如果是这样,如果有人有一个很短的代码样本,那就太棒了! (我是Autofac和Orchard的新手)
由于
答案 0 :(得分:3)
您不应更改控制器工厂。 Orchard提供了更简单的方法来开箱即用的依赖注入。
最简单的方法是从Orchard.IDependency
继承您的界面。然后,Orchard将使用Autofac自动注册您的实现并将其注入任何构造函数。如果您需要更多控制注册过程,那么您可以创建一个Autofac模块并在那里注册您的服务。 Orchard还应该自动获取该模块并将其添加到依赖注入容器中。
例如,如果您创建一个界面:
using Orchard;
public interface IFoo : IDependency {
...
}
创建界面实现:
public class Foo : IFoo {
...
}
然后,Orchard会自动将Foo
实例注入任何定义IFoo
类型参数的构造函数。