C# 温莎城堡注册多个实例

C# 温莎城堡注册多个实例,c#,castle-windsor,C#,Castle Windsor,我正试图根据构造函数名称注册数据库的不同实例。我熟悉温莎城堡的“第一场胜利”概念,但显然我并不完全理解它 我想让下面的uaxDB参数名向ControllerInstaller发送信号,给我一个带有UAXmongoURL、UAXmongoConnection参数的实例。相反,我得到的是第一个实例,带有USERmongoURL和USERmongoconnection参数。所以…first赢了,但即使我使用命名实例?我如何修复,使命名实例胜过任何默认顺序 注意,我不只是想交换这两个组件的顺序,因为我将

我正试图根据构造函数名称注册数据库的不同实例。我熟悉温莎城堡的“第一场胜利”概念,但显然我并不完全理解它

我想让下面的uaxDB参数名向ControllerInstaller发送信号,给我一个带有UAXmongoURL、UAXmongoConnection参数的实例。相反,我得到的是第一个实例,带有USERmongoURL和USERmongoconnection参数。所以…first赢了,但即使我使用命名实例?我如何修复,使命名实例胜过任何默认顺序

注意,我不只是想交换这两个组件的顺序,因为我将有更多的实例,所以我需要扩展到2以外……换句话说,我真的需要理解我做错了什么

// Trying to avoid this constructor declaration in favor of the uncommented constructor
// public DBViewerModel(IMongoConnection devDB, IMongoConnection uaxDB, IMongoConnection prodDB)
public DBViewerModel(IMongoConnection mongoConnection)
{
    //this.devMongoConnection = devDB;
    //this.uaxMongoConnection = uaxDB;
    //this.prodMongoConnection = prodDB;
    this.mongoConnection = mongoConnection;
}
注册后

container.Register(
    Component
        .For<IMongoConnection>()
        .Named("dataDB")
        .ImplementedBy<MongoConnection>()
        .DependsOn(Property.ForKey("DBlocation").Eq(USERmongoURL),
                   Property.ForKey("DB").Eq(USERmongoCollection))
        .LifeStyle.PerWebRequest,

    Component
        .For<IMongoConnection>()
        .Named("uaxDB")
        .ImplementedBy<MongoConnection>()
        .DependsOn(Property.ForKey("DBlocation").Eq(UAXmongoURL),
                   Property.ForKey("DB").Eq(UAXmongoCollection))
        .LifeStyle.PerWebRequest);
container.Register(
组成部分
.对于()
.命名为(“dataDB”)
.由()实施
.DependsOn(Property.ForKey(“DBlocation”).Eq(usermongour),
Property.ForKey(“DB”).Eq(USERmongoCollection))
.LifeStyle.PerWebRequest,
组成部分
.对于()
.命名为(“uaxDB”)
.由()实施
.DependsOn(Property.ForKey(“DBlocation”).Eq(UAXmongoURL),
财产。福基(“DB”).Eq(UAXmongoCollection))
.生活方式。个人网络请求);

您可以明确指定服务覆盖应注入的组件:


这是比较老的方法。如果您使用的是最新版本的Windsor,则最好使用
Dependedson(Dependency.OnComponent(“uaxDB”、“uaxDB”))
API。您真的需要为此进行不同的注册吗?您不能有一个实现从配置文件中读取连接字符串,然后更改环境的配置值吗?但我将同时运行这两个实例。一个不同的模型将在一个应用程序中注入另一个实例。您能否展示一个DBViewerModel组件注册的示例,并进一步说明您实际选择使用“dataDB”或“uaxDB”的层?