我有一个使用多个不同数据库连接的应用程序。我想使用 Castle Windsor 的类型化工厂支持来注入一个工厂,该工厂将实例返回IDbConnection到我的存储库和其他组件中。
这是我的类型化工厂的界面的样子:
public interface IConnectionFactory
{
    IDbConnection CreateConnection();
}
这是一个示例存储库:
public class AccountRepository
{
     private readonly IConnectionFactory connectionFactory;
     public AccountRepository(IConnectionFactory connectionFactory)
     {
         this.connectionFactory = connectionFactory;
     }
     public Account FindAccountById(int id)
     {
         using (var connection = connectionFactory.CreateConnection())
         {
             // TODO use the connection here
         }
     }
}
以及我的组件注册的摘录:
// ...
container.Register(Component.For<IDbConnection>()
    .ImplementedBy<NpgsqlConnection>()
    .LifestyleTransient());
container.Register(Component.For<IConnectionFactory>()
     .AsFactory());
// ...
我所有的IDbConnections 都使用相同的类型 ( NpgsqlConnection) 实现,但我需要使用几个不同的连接字符串。理想情况下,我想设置 Windsor 以根据作为依赖项  IDbConnection的组件为我设置连接字符串(或将其传递给连接构造函数) 。IConnectionFactory
例如:
- 假设我有两个存储库,
AccountRepository并且ItemRepository,它们IConnectionFactory在其构造函数中作为依赖项。 - 假设我还有两个名为
fooand的连接字符串bar。 AccountRepository调用时IConnectionFactory.CreateConnection(),我希望它返回一个IDbConnection使用连接字符串foo。- 但是,当一个
ItemRepository调用时IConnectionFactory.CreateConnection(),我希望它返回一个IDbConnection使用连接字符串bar。 
温莎城堡有可能吗?
我已经研究过这个主题,但没有找到任何适合我的确切情况的解决方案。理想情况下,我想让我的存储库不知道要使用的确切连接字符串,即我不想将我的连接工厂更改为:
public interface IConnectionFactory
{
    IDbConnection CreateConnection(string connectionStringName);
}
我还阅读了我可以找到的所有文档和文章ISubDependencyResolver,ITypedFactoryComponentSelector但我不确定它们是否适用于这种情况或如何将所有内容拼凑在一起。
顺便说一句,我正在使用 Castle Windsor 3.1 和 .NET 4.0。