3

我正在尝试注册一个工厂方法来创建开放泛型类型的实例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,但我不希望结构映射使用该构造函数,我希望它使用我的工厂方法。

任何想法为什么它不使用工厂方法?这是一个错误吗?

4

1 回答 1

5

我分叉存储库以浏览代码并意识到它绝对是一个错误。我修复了这个错误并发送了一个拉取请求,希望它会很快被合并和发布。

于 2012-04-10T20:42:52.040 回答