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「PluginFamilyMongoDb.Driver.MongoServerSettingsにデフォルトのインスタンスが定義されていません」というメッセージがスローされます。そのためのコンストラクターがありますが、MongoCollection構造MongoServerSettingsマップでそのコンストラクターを使用したくないので、ファクトリメソッドを使用したいと思います。

ファクトリメソッドを使用しない理由はありますか?これはバグですか?

4

1 に答える 1

5

コードを参照するためにリポジトリをフォークし、間違いなくバグであることに気づきました。バグを修正してプルリクエストを送信しました。まもなくマージされてリリースされることを願っています。

于 2012-04-10T20:42:52.040 に答える