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.