我在尝试解析命名组件时遇到问题。根据 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)));
然后调用kernel.Resolve<DataContext>(cbo.SelectedItem.ToString());
where cbo
is a ComboBox
conrtol,无论选择哪个选项,我总是会注册第一个组件。