私は、ベースクラスリポジトリから継承する多くのリポジトリを持っています。現在、私はこのような構造のマップで、メモリの実装を登録しています(そして、それは偉大な作業です):StructureMapオープンジェネリックスとCacheByシングルトン
ForRequestedType<Repository<Timeslot>>()
.TheDefaultIsConcreteType<InMemoryRepository<Timeslot>>()
.AsSingletons();
ForRequestedType<Repository<Appointment>>()
.TheDefaultIsConcreteType<InMemoryRepository<Appointment>>()
.AsSingletons();
私はすべてのこれらの(番号がある登録するオープンジェネリックのためのStructureMapのサポートを使用していいだろうと思いました私が新しいリポジトリを追加したときにServiceRegistryを更新する必要はありませんでした。
私はこれを試してみました:動作していないようです
ForRequestedType(typeof (Repository<>))
.CacheBy(InstanceScope.Singleton)
.TheDefaultIsConcreteType(typeof (InMemoryRepository<>));
。例外をスローしませんが、リポジトリはシングルトンではないように動作します。アプリケーションに追加されたものは、アプリケーションのライフサイクル中は維持されません。
オープンジェネリックを登録して、実装をシングルトンスコープでキャッシュすることはできますか?これはASP.NET MVCアプリケーションです。アプリケーションを再起動するまでリポジトリを機能させたいだけです。
ランスは、あなたがこの問題の解決策を見つけ出すのですか? – ahsteele
いいえ、ちょうど構成に追加し続けました。 –