在 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 的实例?