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 个不同的 CacheManager,但对于 StoreOrderService,我强制该实现基于“请求”,即每个请求的缓存。

现在我也有这个注册:

builder.RegisterType<CustomerHelper>().As<ICustomerHelper>().InstancePerHttpRequest();

CustomerHelper 在其构造函数中包含一个 CacheManager。我希望 CustomerHelper 使用MemoryCacheManagerOR the,MemcachedManager但我不希望它使用每个请求策略的缓存。

但是,因为StoreOrderService首先调用了,然后调用了 my CustomerHelper,所以 myCustomerHelper最终得到了 "Cache per request" ICacheManager。如何强制CustomerHelper不使用此“每个请求的缓存” ICacheManager

4

0 回答 0