Generics StructureMap开放泛型和CacheBy Singleton

Generics StructureMap开放泛型和CacheBy Singleton,generics,singleton,repository,structuremap,Generics,Singleton,Repository,Structuremap,我有许多从基类存储库继承的存储库。目前,我正在使用如下结构图注册内存中的实现(它工作得很好): ForRequestedType() .默认混凝土类型() .阿辛格尔顿(); ForRequestedType() .默认混凝土类型() .阿辛格尔顿(); 我认为最好使用StructureMap对开放泛型的支持来注册所有这些(数量正在增长),这样当我添加一个新的存储库时,我就不必更新ServiceRegistry了 我试过这个: ForRequestedType(typeof(Repositor

我有许多从基类存储库继承的存储库。目前,我正在使用如下结构图注册内存中的实现(它工作得很好):

ForRequestedType()
.默认混凝土类型()
.阿辛格尔顿();
ForRequestedType()
.默认混凝土类型()
.阿辛格尔顿();
我认为最好使用StructureMap对开放泛型的支持来注册所有这些(数量正在增长),这样当我添加一个新的存储库时,我就不必更新ServiceRegistry了

我试过这个:

ForRequestedType(typeof(Repository))
.CacheBy(InstanceScope.Singleton)
。默认的混凝土类型(类型(在内存存储中));
这似乎不起作用。它不会抛出异常,但其行为就像存储库不是单例一样。添加到它们的任何内容在应用程序的生命周期中都不会持久


是否可以注册一个开放的泛型,并将实现缓存在一个单例作用域中?这是一个ASP.NET MVC应用程序,我只希望存储库能够工作,直到应用程序重新启动。

我有一个类似的场景,并且能够使用更新的fluent语法(使用StructureMap 2.6.3.0)成功地解决它:

x.For(类型(存储库))
.LifecycleIs(InstanceScope.Singleton)
.使用(类型为(InMemoryRepository));

Lance您找到解决此问题的方法了吗?没有,只是不断添加到配置中。StructureMap的最新版本使用稍微不同的语法:
.LifecycleIs(Lifecycles.Singleton)