aktualisieren Wenn ich in Config definiert haben:Schloss Windsor: Wie kann ich eine Komponenten-Registrierung
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
);
und ich möchte diese Konfiguration erweitern und ein neues Element in die Hörer-Array-Eigenschaft hinzufügen, so dass die endgültige Konfiguration ist effektiv:
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
);
muß wissen, ich den Inhalt des „Array“, wenn zuerst die Komponente Registrierung oder kann ich die Komponente Registrierung abrufen und sie hinzufügen?
Ich möchte meine Konfiguration mit dem Decorator-Muster zu implementieren, so dass ich meinen Container erstellen und erweitern Sie es dann für verschiedene Szenarien wie erforderlich. Das heißt, ich muss auf die bereits konfigurierten Komponenten zugreifen und sie hinzufügen können.
Wurde gedacht, eine Klasse DefaultConfig
zu haben, die das Standard-Setup zurückgeben und dann eine von mehreren "DecoratedConfig
" -Klassen, die die Standardkonfiguration erweitern würden.
So würde ich
IWindsorContaner c = new DecoratedConfig(new DefaultConfig()).InitialiseContainer();
DefaultConfig
würde eingerichtet haben die ActivityService
mit einem DefaultActivityListener
(wie im Beispiel gezeigt).
DecoratedConfig
würde erkennen, dass ActivityService
wurde erstellt und fügen Sie eine eigene Listener-Implementierung zum Listeners
Array auf ActivityService
.
Danke.
CompoentModel Änderung ist der Weg zu gehen. Siehe unten Testmethode. – crowleym