Castle-Windsor 3.1とC#4.0を使用しています。
このように、慣例によりいくつかのコンポーネント(ビュー)を登録します
Classes.FromThisAssembly()
.BasedOn(typeof(ITabPageView<>))
.WithServiceFromInterface(typeof(ITabPageView<>))
.LifestyleTransient()
.Configure(c => c.Properties(PropertyFilter.IgnoreAll))
これは期待どおりに機能します。私が今欲しいのは、すべて ITabPageView
のコンポーネントに対して1つのサービスタイプの別のコンポーネントを登録することです。具体的な例(PRISM)では、登録されてIRegionManager
いるすべてのTabPageに対して、そのタブページの名前でを登録します。リージョンマネージャーは、すでに登録されている1人の中央リージョンマネージャーによって作成される必要があります。現時点では、次のようにしています。
Classes.FromThisAssembly()
.BasedOn(typeof(ITabPageView<>))
.WithServices(typeof(IRegionManager))
.Configure(c =>
{
c.UsingFactoryMethod(kernel => kernel.Resolve<IRegionManager>().CreateRegionManager())
.Named(c.Implementation.Name);
})
これは実際には機能しているように見えますが、もっとエレガントな方法や堅牢な方法があるのではないかと思います。
ありがとう。