Castle Windsor Registro automático de duas montagens diferentes?
-
20-09-2019 - |
Pergunta
container.Register(
AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
.WithService.FirstInterface());
Atualmente, o código acima funcionará bem se a interface também estiver na mesma montagem, mas ele explodirá se o iUserRepository for de uma montagem diferente.
O registro automático de dois conjuntos diferentes é possível? Estou perdendo alguma coisa aqui?
Solução
Sim, é possível definir o registro automático em que a interface é definida em uma montagem diferente. Fazemos isso, embora usemos uma sintaxe ligeiramente diferente:
container.Register(AllTypes
.FromAssemblyContaining<ConfigurationService>()
.Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
.WithService
.FirstInterface()
.Configure(reg => reg.LifeStyle.PerWebRequest));
Não posso dizer se o uso da API diferente faz a diferença, mas presumo que isso não. Em vez disso, acho que a causa do erro que você experimenta é que talvez a montagem que contém a interface não esteja disponível.
Verifique se a fusão pode carregar o tipo desse aplicativo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow