我正在尝试为创建一个开放泛型类型 MongoCollection<>
的实例注册一个工厂方法。然而,当我调用 GetInstance
时,它似乎使用的是 MongoCollection 的构造函数而不是工厂方法。
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>>();
当我运行
GetInstance
这一行时,它从未触发工厂方法内的断点,但是它抛出了一个StructureMapException
异常,内容为“PluginFamily MongoDb.Driver.MongoServerSettings没有定义默认实例”。虽然有一个接受MongoServerSettings
参数的MongoCollection
构造函数,但我不想让StructureMap使用该构造函数,而是要使用我的工厂方法。有什么想法,为什么它不使用工厂方法?这是一个bug吗?