1

我们有一个缓存解决方案,它依赖于 StructureMap 为开发人员提供正确的缓存实现。我正在尝试减少所需的 StructureMap 配置数量,但已经卡住了……缓存提供者(例如本地缓存、分布式……)都实现了接口ICache<T>,并且针对不同的“缓存配置文件”注册了类型根据跨服务器一致性的需要。然后将配置文件映射到某个缓存提供程序。目前,需要为每个缓存的类型指定如何缓存它,这在初始化时提供了很多这样的行:

CacheSetup.CacheType<Foo>.With<LocalMemoryCache>();
CacheSetup.CacheType<Bar>.With<LocalMemoryCache>();
CacheSetup.CacheType<Baz>.With<DistributedCache>();

这些行中的每一行基本上都获取所请求配置文件的缓存提供程序以及ICache<T>该类型的提供程序(的实现)的寄存器。

我想要做的是能够设置一个默认缓存配置文件,该配置文件将用于未明确注册的类型。在上面的示例中,我想设置LocalMemoryCache为默认配置文件,然后在GetInstance<ICache<Foo>>调用时,它应该由与该配置文件关联的缓存提供程序解析。我一直在广泛阅读文档,尤其是拦截部分,但似乎没有办法在创建实例之前进行拦截,这是我需要的。

任何想法如何实现?

4

0 回答 0