1

我使用 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);
                    })

虽然这实际上似乎有效,但我想知道是否有更优雅或更强大的方式。

谢谢。

4

0 回答 0