2012-11-27 24 views
5

这个问题是非常简单的。我想访问整体AutoFac容器,以便我可以在其中注册我的依赖项。如何访问整个AutoFac容器在Orchard中注册依赖关系?

备注:

我不OK与IDependency原因在我的项目,它会导致循环引用(两集)继承。什么我想要做的就是用密钥和访问注册组件在其他程序集中使用相同的键。 在此先感谢。

编辑:

我已经找到了一个名为DefaultOrchardHostContainer核心类,但它仅公开Resolve<>方法,但不Register()

+2

已经提供的答案很好,但我想提供一些关于您的实际循环参考问题的信息。在Orchard中,用于依赖注入的接口映射是在接口名称上完成的,所以实际上可以在两个模块中定义相同的接口名称,并且它们将被视为相同。这在核心模块的几个地方使用。 对于其他类型的循环参考,也可以使用工作或Lazy 而不是T来打破圆。 –

+0

@Le你是一个超级man.many许多thanks.i甚至无法想象使用接口名称的接口mapping.these有关依赖注入在果园的信息非常非常有用。我很幸运,从你学习这些东西。我感谢你的回应。 –

回答

7

您可以直接将Autofac模块添加到您的Orchard模块,而Orchard将会将其提取出来。 ex ...

public class MyModule : Module { 
    protected override void Load(ContainerBuilder builder){ 
     builder.RegisterType<MyDependency>().As<IMyDependency>().InstancePerDependency(); 
    } 
} 
+1

IDependency本身不会引用两个程序集之间的does.check我以前的问题在这里http://stackoverflow.com/questions/13507505/how-to-resolve-a-dependency-between-two-tightly-coupled-namespacein-不同的更详细的。 –

+0

你能否提一下你的意思是“果园模块”? –

+0

我认为我的解决方案应该是这样的“您可以直接将Autofac模块添加到您的Orchard模块,并且Orchard会将其提取出来。” –

相关问题