2012-11-27 21 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會將其提取出來。」 –

相關問題