開発者に正しいキャッシュ実装を提供するためにStructureMapに依存するキャッシングソリューションがあります。必要なStructureMap構成の量を減らそうとしていますが、行き詰まりました...キャッシュプロバイダー(ローカルキャッシュ、分散など)はすべてインターフェイスICache<T>
を実装し、タイプは異なる「キャッシュプロファイル」に対して登録されますサーバー間の一貫性の必要性に応じて。次に、プロファイルがいくつかのキャッシュプロバイダーに対してマップされます。現在、キャッシュされるタイプごとにキャッシュ方法を指定する必要があります。これにより、初期化時に次のような多くの行が表示されます。
CacheSetup.CacheType<Foo>.With<LocalMemoryCache>();
CacheSetup.CacheType<Bar>.With<LocalMemoryCache>();
CacheSetup.CacheType<Baz>.With<DistributedCache>();
これらの各行は、基本的に、要求されたプロファイルのキャッシュプロバイダーをフェッチし、そのプロバイダー(の実装ICache<T>
)をそのタイプに登録します。
私がやりたいのは、明示的に登録されていないタイプに使用されるデフォルトのキャッシュプロファイルを設定できるようにすることです。LocalMemoryCache
上記の例では、デフォルトのプロファイルに設定したいのですが、GetInstance<ICache<Foo>>
が呼び出されたときに、そのプロファイルに関連付けられたキャッシュプロバイダーによって解決される必要があります。私はドキュメント、特にインターセプト部分を広範囲に読んでいますが、インスタンスが作成される前にインターセプトする方法がないようです。これは私が必要とするものです。
これをどのように達成できるかについてのアイデアはありますか?