생성자 이름에 따라 다른 데이터베이스 인스턴스를 등록하려고합니다. Castle Windsor의 "첫 번째 승리"개념에 익숙하지만 분명히 이해하지 못했습니다.Castle Windsor 여러 인스턴스 등록
UAXmongoURL, UAXmongoConnection 매개 변수가있는 인스턴스를 제공하기 위해 아래의 uaxDB 매개 변수 이름에 ControllerInstaller에 신호를 보내고 싶습니다. 대신 USERmongoURL 및 USERmongoconnection 매개 변수를 사용하여 첫 번째 인스턴스를 가져옵니다. 그래서 ... 처음에는 승리하지만, 명명 된 인스턴스를 사용 했더라도? 명명 된 인스턴스가 기본 순서를 넘어서도록 어떻게 수정할 수 있습니까?
참고 아직 2 개 이상의 구성 요소를 순서대로 바꿀 뿐이므로 자세한 인스턴스가 있어야하므로 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);
정말 다른 등록이 필요합니까? 구성 파일에서 연결 문자열을 읽고 해당 환경의 구성 값을 변경하는 구현을 하나만 가질 수 있습니까? – TylerOhlsen
하지만 두 인스턴스를 동시에 실행하게 할 것입니다. 다른 모델은 하나의 앱에 다른 인스턴스가 모두 주입됩니다. – goldfinger
"dataDB"또는 "uaxDB"중 어느 것을 사용하기로 선택했는지에 따라 DBViewerModel의 구성 요소 등록 예제를 보여줄 수 있습니까? – TylerOhlsen