Autofac にはモジュールがあり、Windsor にはインストーラーと StructureMap Registries があります。Simple Injector を使用すると、構成ロジックを再利用可能なクラスにどのようにパックできますか?
私が試してみました:
public interface IModule { }
public class FooModule : IModule
{
public FooModule(SimpleInjector.Container container)
{
container.RegisterSingleton<IBar, Bar>();
container.RegisterSingleton<IFoo, Foo>();
}
}
そして、私はコンポジションルートでそれを使用します:
public static void Main(string[] args)
{
var container = new SimpleInjector.Container();
container.RegisterCollection<IModule>(new FooModule(container));
...
}
ただし、FooModule
コンテナーに依存し、おそらく良い方法ではありません... http://code.google.com/p/autofac/wiki/BestPracticesを参照してください:
コンポーネントがコンテナーに依存している場合は、コンテナーを使用してサービスを取得する方法を確認し、代わりにそれらのサービスをコンポーネントの (依存関係が挿入された) コンストラクター引数に追加します。