私はプログラム的にもXMLでも依存関係を設定しようとしています。私はタイプIMyService
のサービスのリストを持っています。 、私が今やりたい何Autofac XML設定で汎用リストサービスを登録することは可能ですか?
ContainerBuilder builder = new ContainerBuilder();
builder.Register(t => new Logger()).As<ILogger>();
builder.Register(t => new MyService1(t.Resolve<ILogger>()));
builder.Register(t => new MyService2(t.Resolve<ILogger>()));
builder.Register(t => new MyService3(t.Resolve<ILogger>()));
builder.Register(t => new MyService4(t.Resolve<ILogger>()));
builder.Register(t => new MyService5(t.Resolve<ILogger>()));
私はこれらの中で必要なサービスのみを注入できるように、XMLを介してこれらのサービスの動的なリストを登録することです:私はプログラム的コンテナビルダーに各サービスを登録していますエンジン(必要なサービスは、デプロイメント環境に基づいて変更できます)。
私はプログラム的にこれを行うことができます:
builder.Register(t => new List<IMyService> {
t.Resolve<MyService1>(),
t.Resolve<MyService2>(),
t.Resolve<MyService3>() })
.Named<IList<IMyService>>("ListOfMyServices");
しかしたびに必要なサービスの変更をコードの再コンパイルプラスの展開を避けるために、私はAutofac XML構成を介してこれを行うにしようとしていますか?これを行う方法はありますか? XMLを設定する必要はありません
マイエンジンレジストリは、このです:
builder.Register(t => new MyEngine(t.ResolveNamed<IList<IMyService>>("ListOfMyServices")));
ええ、それはこの方法で行うことができ、私はそれを考えていました。しかし、私は実際にAutofac XML設定でそれが可能かどうかを知りたがっていました。あなたはそれができないと指摘したようにこれを答えとしてマークします。 –