オープンジェネリック型のインスタンスを作成するためのファクトリメソッドを登録しようとしています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「PluginFamilyMongoDb.Driver.MongoServerSettingsにデフォルトのインスタンスが定義されていません」というメッセージがスローされます。そのためのコンストラクターがありますが、MongoCollection構造MongoServerSettingsマップでそのコンストラクターを使用したくないので、ファクトリメソッドを使用したいと思います。
ファクトリメソッドを使用しない理由はありますか?これはバグですか?