2012-04-06 10 views
3

개방형 제네릭 유형 MongoCollection<>의 인스턴스를 생성하기위한 팩토리 메서드를 등록하려고합니다. 그러나 내가 GetInstance 때 그것은 공장 메서드 대신 MongoCollection의 생성자를 사용하는 것으로 나타납니다. 나는 그것이 팩토리 메소드 내부에 중단 점을 명중 결코 GetInstance 줄을 실행할 때StructureMap 인스턴스 팩토리 메서드

var mongo = new MongoConfiguration("mongodb://localhost", "test"); 
For(typeof (MongoCollection<>)).Use(c => 
{ 
    var requestedType = c.BuildStack.Current.RequestedType; // set breakpoint here 
    var type = requestedType.GetGenericArguments()[0]; 
    return mongo.GetCollection(type); 
}); 

은 그 때 나는

ObjectFactory.GetInstance<MongoCollection<User>>(); 

을하지만, 어떤 기본 인스턴스가 PluginFamily MongoDb.Driver에 대해 정의 "라는 StructureMapException가 발생합니다. MongoServerSettings ". 에 대해 MongoServerSettings을 사용하는 생성자가 있지만 구조체 맵에서 해당 생성자를 사용하고 싶지 않습니다. 내 공장 메서드를 사용하고 싶습니다.

팩토리 방식을 사용하지 않는 이유는 무엇입니까? 이거 버그 야?

+0

시도해 보셨습니까 (typeof (MongoCollection )). (...); ? – Rookian

+0

@Rookian도 그렇게 보입니다. 그냥 일반 제네릭을위한 것이 아니라고 생각해 ... – kelloti

+0

흠 나는 문자열을 단순한 목록으로 시도했다. – Rookian

답변

5

나는 코드를 탐색하기 위해 저장소를 갈래 쳤고 버그를 확실히 깨달았다. 나는 버그를 고치고 a pull request을 보냈다. 잘하면 병합되어 곧 공개 될 것이다.

+0

은 소스에 들어가서 직접 문제를 해결할 때 +1이 필요합니다. –