オープンジェネリック型のインスタンスを作成するためのファクトリメソッドを登録しようとしています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
マップでそのコンストラクターを使用したくないので、ファクトリメソッドを使用したいと思います。
ファクトリメソッドを使用しない理由はありますか?これはバグですか?