Декораторы с разными аргументами конструктора

Используя Castle Windsor, я хотел бы создать класс, который записывает целое число. Но я бы хотел несколько раз украсить его другими классами. Я могу видеть, как это работает, если все вовлеченные бетоны имеют зависимости, которые могут быть разрешены, но здесь это не так. Рассмотрим этот код:

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;
    }
}

И зарегистрирован с:

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

РазрешениеIRecorder никогда не будет работать здесь, так какModelUpdatingRecorder имеет необязательную зависимость. Я не могу использовать статическую зависимость, так какseed не известно во время компиляции.

Есть ли способ указатьseed параметр во время выполнения, и украшение все еще работает?

Этот пример кода является упрощением моего сценария, но идея та же. У меня есть декораторы, и самый низкий полагается на конкретное значение / экземпляр, который будет предоставлен ему.

Ответы на вопрос(2)

Ваш ответ на вопрос