温莎城堡问题

k1.*_*k1. 3 .net castle-windsor inversion-of-control

我有一个城堡核心的问题,我试图注入两个不同的数据库连接到特定的存储库.

public class Repository1 { 
  public Repository1(System.Data.Common.DbConnection conn) { } 
}
public class Repository2 { 
  public Repository2(System.Data.Common.DbConnection conn) { } 
}
Run Code Online (Sandbox Code Playgroud)

现在举例来说,我希望将Mysql连接注入Repository1,并将Oracle连接注入repository2.

Mar*_*ann 5

像这样的东西:

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" }));
Run Code Online (Sandbox Code Playgroud)

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