名前付きコンポーネントを解決しようとして問題が発生しています。Castle のドキュメントによると、複数のコンポーネントに同じ依存関係がある場合、最初に登録されたコンポーネントが最初に選択されると記載されています。同じサービスにさらにコンポーネントを登録する
それを避けるために、名前付きコンポーネントを使用して、同じ依存関係を解決します。
container.Register(Component.For<DataContext>().ImplementedBy<MyContext>()
.Named("Db1").DependsOn(Property.ForKey<string>()
.Eq(Configuration.ConnectionStrings["Db1"].ConnectionString)));
container.Register(Component.For<DataContext>().ImplementedBy<MyContext>()
.Named("Db2").DependsOn(Property.ForKey<string>()
.Eq(Configuration.ConnectionStrings["Db2"].ConnectionString)));
次に、 conrtol のkernel.Resolve<DataContext>(cbo.SelectedItem.ToString());
場所を呼び出します。どのオプションが選択されていても、常に最初のコンポーネントが登録されます。cbo
ComboBox