我正在尝试注册一个工厂方法来创建开放泛型类型的实例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 定义默认实例”。有一个构造函数MongoCollection
需要 a MongoServerSettings
,但我不希望结构映射使用该构造函数,我希望它使用我的工厂方法。
任何想法为什么它不使用工厂方法?这是一个错误吗?