Windsor: extracción de objetos transitorios del contenedor

¿Cómo puedo extraer objetos del contenedor que sean de naturaleza transitoria? ¿Tengo que registrarlos con el contenedor e inyectar en el constructor de la clase que necesita? Inyectar todo en el constructor no se siente bien. También solo para una clase no quiero crear unaTypedFactory e inyecte la fábrica en la clase que necesita.

Otro pensamiento que vino a mí era "nuevo" sobre la base de la necesidad. Pero también estoy inyectando unaLogger componente (a través de la propiedad) en todas mis clases. Entonces, si los actualizo, tendré que instanciar manualmente laLogger en esas clases. ¿Cómo puedo seguir usando el contenedor para TODAS mis clases?

nyección de @Logger: La mayoría de mis clases tienen elLogger propiedad definida, excepto donde hay una cadena de herencia (en ese caso, solo la clase base tiene esta propiedad, y todas las clases derivadas la usan). Cuando se crean instancias a través del contenedor Windsor, obtendrían mi implementación deILogger inyectado en ellos.

//Install QueueMonitor as Singleton
Container.Register(Component.For<QueueMonitor>().LifestyleSingleton());
//Install DataProcessor as Trnsient
Container.Register(Component.For<DataProcessor>().LifestyleTransient());

Container.Register(Component.For<Data>().LifestyleScoped());

public class QueueMonitor
{
    private dataProcessor;

    public ILogger Logger { get; set; }

    public void OnDataReceived(Data data)
    {
        //pull the dataProcessor from factory    
        dataProcessor.ProcessData(data);
    }
}

public class DataProcessor
{
    public ILogger Logger { get; set; }

    public Record[] ProcessData(Data data)
    {
        //Data can have multiple Records
        //Loop through the data and create new set of Records
        //Is this the correct way to create new records?
        //How do I use container here and avoid "new" 
        Record record = new Record(/*using the data */);
        ...

        //return a list of Records    
    }
}


public class Record
{
    public ILogger Logger { get; set; }

    private _recordNumber;
    private _recordOwner;

    public string GetDescription()
    {
        Logger.LogDebug("log something");
        // return the custom description
    }
}

Preguntas:

¿Cómo creo una nuevaRecord objeto sin usar "nuevo"?

QueueMonitor esSingleton, mientras queData es "Scoped". ¿Cómo puedo inyectarData dentroOnDataReceived() método?

Respuestas a la pregunta(2)

Su respuesta a la pregunta