使用SimpleInjector注册DynaCaches

时间:2014-06-17 10:05:28

标签: c# .net dependency-injection simple-injector dynacache

您好我正在尝试在我的解决方案中使用Dynacache来缓存我从数据库返回的数据,因此当我使用Telerik网格过滤数据页面等时,我不必返回数据库来获取数据每一次。

DynaCache页面上的示例显示它与Ninject DI一起使用如下:

kernel.Bind<IDynaCacheService>().To<MemoryCacheService>();
kernel.Bind<ITestClass>().To(Cacheable.CreateType<TestClass>());

我使用SimpleInjector作为我的DI容器。有没有人使用Dynacache和SimpleInjector,因为我在使用SimpleInjector获取正确的语法注册Dynacache时遇到了一些困难,就像在Ninject中显示的那样

2 个答案:

答案 0 :(得分:2)

Simple Injector等效于:

container.Register<IDynaCacheService, MemoryCacheService>();
container.Register(typeof(ITestClass), Cacheable.CreateType<TestClass>());

但是,由于MemoryCacheService是一种框架类型,因此您使用工厂代表进行注册会更好(如here所述):

container.Register<IDynaCacheService>(() => new MemoryCacheService());
container.Register(typeof(ITestClass), Cacheable.CreateType<TestClass>());

答案 1 :(得分:1)

我现在整理了一个blog post - 标记为正确的答案实际上并不正确 - MemoryCacheService需要是一个单例,因为它包含一个需要在所有相关实例之间共享的MemoryCache实例