Dekorateure mit unterschiedlichen Konstruktorargumenten

Mit Castle Windsor möchte ich eine Klasse erstellen, die eine Ganzzahl aufzeichnet. Aber ich würde es gerne mehrmals mit anderen Klassen dekorieren. Ich kann sehen, wie das funktioniert, wenn alle beteiligten Betone Abhängigkeiten haben, die aufgelöst werden können, aber das ist hier nicht der Fall. Betrachten Sie diesen Code:

public interface IRecorder
{
    void Add(int value);
}

public class NotifyingRecorder : IRecorder
{
    readonly IRecorder decoratedRecorder;

    public NotifyingRecorder(IRecorder decoratedRecorder)
    {
        this.decoratedRecorder = decoratedRecorder;
    }

    public void Add(int value)
    {
        decoratedRecorder.Add(value);
        System.Console.WriteLine("Added " + value);
    }
}

public class ModelUpdatingRecorder : IRecorder
{
    int seed;

    public ModelUpdatingRecorder(int seed)
    {
        this.seed = seed;
    }

    public void Add(int value)
    {
        seed += value;
    }
}

Und registriert bei:

container.Register(Component.For<IRecorder>().ImplementedBy<NotifyingRecorder>());
container.Register(Component.For<IRecorder>().ImplementedBy<ModelUpdatingRecorder>());

Auflösen einesIRecorder werde hier nie arbeiten, daModelUpdatingRecorder hat eine nicht-optionale Abhängigkeit. Ich kann da keine statische Abhängigkeit verwendenseed ist zur Kompilierungszeit nicht bekannt.

Gibt es eine Möglichkeit, die anzugebenseed Parameter zur Laufzeit und hat die Dekoration noch funktioniert?

Dieses Codebeispiel ist eine Vereinfachung meines Szenarios, aber die Idee ist dieselbe. Ich habe Dekorateure, und der niedrigste ist auf einen bestimmten Wert / eine bestimmte Instanz angewiesen, die ihm zur Verfügung gestellt werden soll.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage