用SimpleInjector注册动态缓存
本文关键字:缓存 动态 注册 SimpleInjector | 更新日期: 2023-09-27 18:08:52
嗨,我试图在我的解决方案中使用Dynacache来缓存我从数据库返回的数据,所以当我使用Telerik网格来过滤数据页面等时,我不必每次回到DB来获取数据。
DynaCache页面上的示例显示它与Ninject DI一起使用,如下:
kernel.Bind<IDynaCacheService>().To<MemoryCacheService>();
kernel.Bind<ITestClass>().To(Cacheable.CreateType<TestClass>());
我使用SimpleInjector作为我的DI容器。是否有人使用Dynacache与SimpleInjector,因为我有一些困难,以获得正确的语法注册Dynacache与SimpleInjector相同的方式,它显示在Ninject
与简单注入器等价的是:
container.Register<IDynaCacheService, MemoryCacheService>();
container.Register(typeof(ITestClass), Cacheable.CreateType<TestClass>());
然而,由于MemoryCacheService
是一个框架类型,您最好(在这里解释)使用工厂委托进行注册:
container.Register<IDynaCacheService>(() => new MemoryCacheService());
container.Register(typeof(ITestClass), Cacheable.CreateType<TestClass>());
我已经写了一篇博文来讨论这个问题——被标记为正确的答案实际上并不正确——MemoryCacheService需要是一个单例,因为它包含一个MemoryCache实例,需要在所有依赖的实例之间共享。