Decoradores con diferentes argumentos de constructor.

Usando Castle Windsor, me gustaría crear una clase que registre un número entero. Pero me gustaría decorarlo varias veces con otras clases. Puedo ver cómo funciona esto si todos los hormigones involucrados tienen dependencias que pueden resolverse, pero ese no es el caso aquí. Considera este código:

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

Y registrado con:

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

Resolviendo unIRecorder nunca funcionará aquí, ya queModelUpdatingRecorder tiene una dependencia no opcional. No puedo usar una dependencia estática desdeseed no se conoce en tiempo de compilación.

¿Hay alguna manera de especificar elseed parámetro en tiempo de ejecución y la decoración sigue funcionando?

Este ejemplo de código es una simplificación de mi escenario, pero la idea es la misma. Tengo decoradores, y el más bajo depende de un valor / instancia específico que se le proporcione.

Respuestas a la pregunta(2)

Su respuesta a la pregunta