2

在 Nopcommerce 中,接口 ICacheManager 的实现被注入到使用缓存的对象中。

这样的类之一是 CategoryService

public partial class CategoryService : ICategoryService
   {
        private readonly ICacheManager _cacheManager;

       public CategoryService(ICacheManager cacheManager)
   {
   }
}

依赖关系由 autofac 解决,并使用此注册 _cacheManager 获取 PerRequestCacheManager 的实例。

   builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_static").SingleInstance();
   builder.RegisterType<PerRequestCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_per_request").InstancePerHttpRequest();

    builder.RegisterType<CategoryService>().As<ICategoryService>().InstancePerHttpRequest();

我不确定为什么要使用 PerRequestCacheManager。我尝试使用此注册将 _cacheManager 作为 MemoryCacheManager 的实例,但我仍然得到 PerRequestCacheManager 的实例。

   builder.RegisterType<CategoryService>().As<ICategoryService>()
               .WithParameter(ResolvedParameter.ForNamed<ICacheManager>("nop_cache_static"))
               .InstancePerHttpRequest();

如何更改注册以使 Category 中的 _cacheManager 获得 MemoryCacheManager 的实例?

4

0 回答 0