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?

questionAnswers(3)

yourAnswerToTheQuestion