我正在尝试注册一个工厂方法来创建一个开放的泛型类型 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
的构造函数,但我不希望结构映射使用该构造函数,我希望它使用我的工厂方法。任何想法为什么不使用工厂方法?这是一个错误吗?
最佳答案
我 fork 了存储库来浏览代码并意识到它绝对是一个错误。我修复了这个错误并发送了 a pull request ,希望它很快就会被合并和发布。
关于c#-4.0 - StructureMap 实例工厂方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10045800/