2

Nopcommerce では、インターフェイス ICacheManager の実装が、キャッシュを使用するオブジェクトに挿入されます。

そのようなクラスの 1 つが 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