2016-10-28 9 views
1

いくつかのサービスを含むクラスライブラリがあります。Structuremapクラスライブラリモジュール

構造マップを使用して、これらのサービスをそのクラスライブラリに登録します。この結果、このクラスライブラリを使用しているアセンブリでは、このクラスライブラリの依存関係を設定してはならず、ライブラリ内でこれを設定するモジュールを呼び出すだけです。

たとえば、これはオートファックを使用して行うことができます。私はIAAAServiceとIBBBServiceを持つクラスライブラリを持っていると言うことができます。

public class AutofacModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<AAAService>().As<IAAAService>(); 
     builder.RegisterType<BBBService>().As<IBBBService>(); 
    } 
} 

、私はこれを行うことができ、ライブラリを使用する必要がありますアセンブリから:私は次の操作を実行し、このクラスライブラリにautofacをすることができます使用

builder.RegisterModule(new AutofacModule()); 

私は私がバインドい状況にしています構造マップを使用し、私は似たようなことをしたい。

これは構造マップで可能ですか?もしそうなら、どうすればいい?

感謝:)のStructureMapで

答えて

1

は、同様の概念は、レジストリと呼ばれています。詳細はこちらをご覧ください:http://structuremap.github.io/registration/

私はあなたのクラスライブラリ内のコンテナを使用することはお勧めしませんが、ご注意ください。コンテナは、アプリケーション内でのみ使用する必要があります(if they are to be used at all)。 this articleから引用

A DIコンテナは、組成物のルートから参照されるべきです。他のすべてのモジュールはコンテナへの参照を持たないはずです。

+0

非常に参考にしていただきありがとうございます。 – Diemauerdk

+0

ようこそ。 –