我使用 Castle-Windsor 3.1 和 C# 4.0。
我按照惯例注册了一些组件(视图),像这样
Classes.FromThisAssembly()
.BasedOn(typeof(ITabPageView<>))
.WithServiceFromInterface(typeof(ITabPageView<>))
.LifestyleTransient()
.Configure(c => c.Properties(PropertyFilter.IgnoreAll))
这按预期工作。我现在想要的是,为每个 ITabPageView
组件注册一个服务类型的另一个组件。在具体示例(PRISM)中,我想IRegionManager
为每个已注册的 TabPage 注册一个带有该标签页名称的标签页。区域管理器必须由一位已注册的中央区域管理器创建。目前我这样做:
Classes.FromThisAssembly()
.BasedOn(typeof(ITabPageView<>))
.WithServices(typeof(IRegionManager))
.Configure(c =>
{
c.UsingFactoryMethod(kernel => kernel.Resolve<IRegionManager>().CreateRegionManager())
.Named(c.Implementation.Name);
})
虽然这实际上似乎有效,但我想知道是否有更优雅或更强大的方式。
谢谢。