我有与StructureMap 中的命名单例实例(多个 nHibernate 会话工厂)中描述的完全相同的场景
如果我使用 StructureMap 2.6.2 实现它 - 太好了!
但是,由于遗留项目中涉及的各种因素无法使用最新的 .NET 框架版本以及其他一些原因,我目前必须使用 StructureMap 2.5.4。假设在可预见的未来我无法升级这个问题。
2.5.4 的语法显然与 2.6.2 完全不同,我不知道如何使用它的 API 来实现相同的东西。
特别是这东西
For<ISessionFactory>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
.Add(context => CreateSessionFactory(@"MyName")).Named("MySessionFactory");
For<ISession>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
.Add(context => context.GetInstance<ISessionFactory>("MySessionFactory").OpenSession()).Named("MyName");
For<ISessionFactory>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Singleton))
.Add(context => CreateSessionFactory(@"My2ndName")).Named("My2ndSessionFactory");
For<ISession>().LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.Hybrid))
.Add(context => context.GetInstance<ISessionFactory>("MySessionFactory").OpenSession()).Named("My2ndName");
...使用名为 CreateSessionFactory(string) 的方法创建相关配置。
“Add”和随后的“GetInstance”是无效的,需要重构才能与 2.5.4 一起使用——我太笨了,无法弄清楚如何实现,或者如果你确实可以实现同样的事情。
干杯