.net - 温莎城堡问题

标签 .net inversion-of-control castle-windsor

我在使用 caSTLe core 时遇到问题,我正在尝试将两个不同的数据库连接注入(inject)特定的存储库。

public class Repository1 { 
  public Repository1(System.Data.Common.DbConnection conn) { } 
}
public class Repository2 { 
  public Repository2(System.Data.Common.DbConnection conn) { } 
}

例如,现在我想注入(inject)到 Repository1 的 Mysql 连接和到 repository2 的 Oracle 连接。

最佳答案

像这样:

container.Register(Component
    .For<DbConnection>()
    .ImplementedBy<MysqlConnection>()
    .Named("mysql"));
container.Register(Component
    .For<DbConnection>()
    .ImplementedBy<OracleConnection>()
    .Named("oracle"));

container.Register(Component
    .For<Repository1>()
    .ServiceOverrides(new { conn = "mysql" }));
container.Register(Component
    .For<Repository2>()
    .ServiceOverrides(new { conn = "oracle" }));

您可能需要调整 DbConnection 注册,因为我不知道确切的类名可能是什么,或者它们是否需要其他配置设置。

关于.net - 温莎城堡问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158858/

相关文章:

c# - 创建布局和逻辑 AutoCAD 插件对话框

c# - 使用命名参数动态调用方法

.Net 代码库元素

c# - 组合根与服务定位器

c# - 温莎城堡 : Can a Typed Factory Facility pass a parameter down to one of the type's dependencies?

asp.net-mvc-3 - 带有 MVC 和自定义 MembershipProvider 的 DI

caSTLe-windsor - 温莎城堡 : how to pass arguments to deep dependencies?

.net - 在WPF中,如何确定控件是否对用户可见?

c# - 使用名称来区分使用 IoC 的实例

c# - Autofac:注册 Func<> 或工厂?