如果我在配置中定义:
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使用 a设置DefaultActivityListener(如示例所示)。
DecoratedConfig将识别ActivityService已创建并将其自己的 Listener 实现添加到Listeners数组 on ActivityService。
谢谢。