1

ここで私の 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 にMemoryCacheManagerOR のMemcachedManagerいずれかを使用してもらいたいのですが、リクエストごとのキャッシュ戦略を使用したくありません。

ただし、StoreOrderServiceが最初に呼び出され、次に my が呼び出されるためCustomerHelper、 myCustomerHelperは "Cache per request"になりICacheManagerます。CustomerHelperこの「リクエストごとのキャッシュ」を強制的に使用しないようにするにはどうすればよいICacheManagerですか?

4

0 に答える 0