オープンジェネリックタイプMongoCollection<>
のインスタンスを作成するためのファクトリメソッドを登録しようとしています。しかし、私がGetInstance
になると、ファクトリメソッドの代わりにMongoCollectionのコンストラクタが使用されているようです。私はそれがファクトリメソッド内のブレークポイントにヒットすることはありませんが、それは「PluginFamily MongoDb.Driverのために定義されていません既定のインスタンスを言っていないStructureMapException
をスローGetInstance
ラインを実行するとStructureMapインスタンスファクトリメソッド
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>>();
を行います。 MongoServerSettings "を参照してください。 MongoCollection
のコンストラクタにはMongoServerSettings
が必要ですが、構造体マップでそのコンストラクタを使用したくない場合は、ファクトリメソッドを使用します。
なぜファクトリメソッドを使用しないのですか?これはバグですか?
For(typeof(MongoCollection))を試しましたか?(...);を使用してください。 ? –
Rookian
@Rookianはそれもそうであるように見えます。あなたがオープンジェネリックのためだけではないことを推測してください... – kelloti
ええと私はそれが他の一般的な要素を指定するとき、単純な文字列のリストでそれを試しました。 – Rookian