Проблема Виндзорского замка - PullRequest
3 голосов
/ 23 августа 2011

У меня проблема с ядром замка, я пытаюсь внедрить два разных соединения с базой данных в определенные репозитории.

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

Теперь, например, я хотел бы внедрить Mysql-соединение с Repository1 и Oracle-соединение с repository2.

1 Ответ

5 голосов
/ 23 августа 2011

Примерно так:

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, поскольку я не знаю, какие могут быть точные имена классов или требуются ли для них другие параметры конфигурации.

...