ここで私の Autofac 登録には、次の登録があります。
builder.RegisterType<MemcachedClient>()
.As<IMemcachedClient>().SingleInstance();
builder.RegisterType<RequestCacheManager>()
.As<ICacheManager>()
.Named<ICacheManager>("cache_per_request").InstancePerHttpRequest();
builder.RegisterType<MemcachedManager>()
.As<ICacheManager>()
.Named<ICacheManager>("cache_static_mem").InstancePerHttpRequest();
builder.RegisterType<MemoryCacheManager>()
.As<ICacheManager>()
.Named<ICacheManager>("cache_static").SingleInstance();
builder.RegisterType<StoreOrderService>().As<IStoreOrderService>()
.WithParameter(ResolvedParameter.ForNamed<ICacheManager>("cache_per_request"))
.InstancePerHttpRequest();
ご覧のとおり、私は 3 つの異なる CacheManagers を登録していますが、StoreOrderService については、その実装を「リクエスト」ベース、つまりリクエストごとのキャッシングに強制しています。
今、私はこの登録も持っています:
builder.RegisterType<CustomerHelper>().As<ICustomerHelper>().InstancePerHttpRequest();
CustomerHelper には、そのコンストラクターに CacheManager が含まれています。CustomerHelper にMemoryCacheManager
OR のMemcachedManager
いずれかを使用してもらいたいのですが、リクエストごとのキャッシュ戦略を使用したくありません。
ただし、StoreOrderService
が最初に呼び出され、次に my が呼び出されるためCustomerHelper
、 myCustomerHelper
は "Cache per request"になりICacheManager
ます。CustomerHelper
この「リクエストごとのキャッシュ」を強制的に使用しないようにするにはどうすればよいICacheManager
ですか?