Como posso usar o Unity com classes internas?
Eu tenho um aplicativo de API da Web e estou usando o Unity para injeção de dependência. O aplicativo usa uma biblioteca que contém um IDoStuff da interface e uma classe que implementa a interface:
internal interface IDoStuff
{
void DoSomething();
}
internal class DoStuff : IDoStuff
{
public void DoSomething()
{
// Do some stuff
}
}
A biblioteca também tem uma classe pública que precisa fazer coisas:
public class NeedToDoStuff
{
private IDoStuff doStuff;
public NeedToDoStuff()
{
this.doStuff = new DoStuff();
}
internal NeedToDoStuff(IDoStuff doStuff)
{
this.doStuff = doStuff;
}
void PleaseDoStuff()
{
doStuff.DoSomething();
}
}
Gostaria de usar o Unity para criar uma instância NeedToDoStuff no meu controlador e também ser responsável por criar a classe DoStuff internamente, em vez de o construtor chamar diretamente de novo. No entanto, a única maneira de ver isso é tornar públicas a interface IDoStuff e a classe DoStuff, o que me parece errado. Parece errado, pois esses são detalhes de implementação e são relevantes apenas na própria biblioteca. Entendo que, com a inversão de controle, você está permitindo que o aplicativo de nível superior faça escolhas sobre suas implementações subjacentes por meio de uma configuração de algum tipo, mas isso deve significar que não há mais necessidade de etc interno?