Castle Windsor 注册多个实例

3
我尝试根据构造函数名称注册不同实例的数据库。我熟悉Castle Windsor中的“先来后到”概念,但显然我并没有完全理解它。
我希望下面的uaxDB参数名称能够向ControllerInstaller发出信号,以便给我使用UAXmongoURL、UAXmongoConnection参数的实例。但是,我得到了第一个实例,其中包含USERmongoURL和USERmongoconnection参数。所以...先来后到,但即使我使用了命名实例呢?如何修复命名实例优先于任何默认排序?
请注意,我不只是想交换这两个组件的顺序,因为我将要有更多的实例,所以我需要扩展到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;
}

With registration...

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);

你真的需要针对这个做不同的注册吗?难道不能有一个实现,它从配置文件中读取连接字符串然后更改环境的配置值吗? - TylerOhlsen
但是我将同时运行两个实例。另一个模型将被注入到另一个实例中,全部在一个应用程序中完成。 - goldfinger
你能展示一下如何注册DBViewerModel组件,以及在更高层面上,你是如何选择使用"dataDB"还是"uaxDB"的实际例子吗? - TylerOhlsen
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接