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?

Foi útil?

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
scroll top