如果我在配置中定义了:
container.Register(
Component.For<X.Y.Z.IActivityService>()
.ImplementedBy<X.Y.Z.ActivityService>()
.ServiceOverrides(ServiceOverride.ForKey("Listeners").Eq(new [] { typeof(X.Y.Z.DefaultActivityListener).FullName }))
.LifeStyle.Transient
);
我希望扩展此配置并向 Listeners 数组属性添加一个新项目,以便最终配置有效:
container.Register(
Component.For<X.Y.Z.IActivityService>()
.ImplementedBy<X.Y.Z.ActivityService>()
.ServiceOverrides(ServiceOverride.ForKey("Listeners").Eq(new [] { typeof(X.Y.Z.DefaultActivityListener).FullName, "MyOtherListenerID" }))
.LifeStyle.Transient
);
第一次注册组件时我必须知道“数组”的内容,还是可以检索组件注册并添加到其中?
我希望使用装饰器模式来实现我的配置,以便我可以构建我的容器,然后根据不同场景的需要对其进行扩展。这意味着我需要能够访问已配置的组件并向其添加。
本来想上课DefaultConfig
返回默认设置,然后返回多个设置之一”DecoratedConfig
“类,这将扩展默认配置。
所以我会
IWindsorContaner c = new DecoratedConfig(new DefaultConfig()).InitialiseContainer();
DefaultConfig
将设置ActivityService
with a DefaultActivityListener
(如示例所示)。
DecoratedConfig
会认识到ActivityService
已经创建并将其自己的监听器实现添加到Listeners
阵列上ActivityService
.
Thanks.