StructureMap实例工厂方法

时间:2012-04-06 15:45:26

标签: c#-4.0 structuremap factory-method open-generics

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

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

1 个答案:

答案 0 :(得分:5)

我将存储库分叉以浏览代码,并意识到它肯定是一个错误。我修复了错误并发送了a pull request,希望它很快会合并并发布。