2012-11-27 16 views
5

質問はかなり簡単です。私は全体的なAutoFacコンテナにアクセスしたいので、私は自分の依存関係を登録することができます。Orchardで依存関係を登録するために全体のAutoFacコンテナにアクセスするには?

発言:

が、私はそれが(2つのアセンブリの)円形参照になり、私のプロジェクトにIDependency原因から継承してOKではないよ.whatアイワナんがキーとアクセスそれにコンポーネントを登録しています他のアセンブリでは同じキーを使用します。ありがとうございます。

EDIT:

私がコアにDefaultOrchardHostContainerと呼ばれるクラスを発見したが、それが唯一のResolve<>方法ではなく、Register()を公開します。

+2

答えは正常ですが、実際の循環参照の問題についていくつかの情報を提供したいと思います。オーチャードでは、依存関係注入のためのインターフェイスマッピングはインターフェイス名で行われるため、実際には2つのモジュールで同じインターフェイス名を定義することができ、同じものとみなされます。これは、コアモジュールのいくつかの場所で使用されます。 他の種類の循環参照の場合は、円を破るためにTの代わりにまたはLazy を使用することもできます。 –

+0

@Leあなたはスーパーman.many多くのthanks.iインターフェイスのマッピングのためにインタフェース名を使用することについて想像することはできません。果樹園の依存性注入についてのこれらの情報は非常に非常に有用だった。私は非常にあなたからこのものを学ぶと幸運です。私はあなたの応答をありがとうございます。 –

答えて

7

OrchardモジュールにAutofacモジュールを直接追加することができます。オーチャードがOrchardモジュールをピックアップします。例...

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

IDependency自体は2つのアセンブリの間で参照するのではありません。私の前の質問はこちらhttp://stackoverflow.com/questions/13507505/how-to-resolve-a-dependency-between-two-tightly-coupled-namespacein-詳細についてはdifferent-aを参照してください。 –

+0

「オーチャード・モジュール」の意味を教えてください。 –

+0

私の解決策は "あなたがOrchardモジュールに直接Autofacモジュールを追加することができ、Orchardがそれを受け取ることができるということです。" –

関連する問題