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 で動作するようにリファクタリングする必要があります - 私は愚かすぎてどうやって解決するか、または実際に同じことを達成できるかどうかを判断できません。
乾杯