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