Windsor - puxando objetos transitórios do contêiner

Como posso puxar objetos do contêiner de natureza transitória? Preciso registrá-los no contêiner e injetar no construtor da classe que precisa? Injetar tudo no construtor não é bom. Também apenas para uma classe, não quero criar umTypedFactory e injete a fábrica na classe que precis

Outro pensamento que me ocorreu foi "novo", conforme necessário. Mas também estou injetando umLogger component (através da propriedade) em todas as minhas classes. Portanto, se eu atualizá-las, terei que instanciar manualmente oLogger nessas classes. Como posso continuar usando o contêiner para TODAS as minhas aulas?

njeção @Logger: A maioria das minhas aulas tem oLogger propriedade definida, exceto onde houver cadeia de herança (nesse caso, apenas a classe base possui essa propriedade e todas as classes derivadas a utilizam). Quando estes são instanciados através do contêiner Windsor, eles obtêm minha implementação deILogger injetado neles.

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

Questões

Como crio novoRecord objeto sem usar "novo"?

QueueMonitor éSingleton, enquanto queData é "escopo". Como posso injetarData para dentroOnDataReceived() método?

questionAnswers(2)

yourAnswerToTheQuestion