Castle Windsor IOC: Passando Parâmetros do Construtor para Componentes Filhos

O código a seguir é apenas para fins de demonstração.

Vamos dizer que eu tenho 2 componentes (businessService e dataService) e uma classe de interface do usuário.

A classe de interface do usuário precisa de um serviço de negócios, businessService precisa de um dataService e o dataService depende de um connectionString.

Forme a classe de interface do usuário que eu preciso resolver o serviço de negócios, por isso estou escrevendo o código abaixo:

var service = container.Resolve<BusinessService>(new { dependancy = "con string 123" }));

observe que dependência é o parâmetro do construtor connectionString.

Mas o código acima não está funcionando, dizendo que o dataService espera dependência que não foi satisfeita.

Não é possível criar o componente 'dataService', pois ele possui dependências a serem satisfeitas. dataService está aguardando as seguintes dependências:

Chaves (componentes com chaves específicas) - dependência que não foi registrada.

Então, como solução alternativa, estou fazendo o seguinte:

var service = container.Resolve<BusinessService>(new { dataService = container.Resolve<IDataService>(new { dependancy = "123" }) });

Mas do design, estilo de codificação e muitas perspectivas, essa não é uma boa maneira de fazê-lo.

Então, por favor, se você puder informar por que não está funcionando da maneira simples ou se você tiver uma solução melhor, compartilhe.

questionAnswers(3)

yourAnswerToTheQuestion