¿Cómo puedo usar Unity con clases internas?

Tengo una aplicación de API web y estoy usando Unity para la inyección de dependencia. La aplicación utiliza una biblioteca que contiene una interfaz IDoStuff y una clase que implementa la interfaz:

internal interface IDoStuff
{
    void DoSomething();
}

internal class DoStuff : IDoStuff
{
    public void DoSomething()
    {
        // Do some stuff
    }
}

La biblioteca también tiene una clase pública que necesita hacer cosas:

public class NeedToDoStuff
{
    private IDoStuff doStuff;

    public NeedToDoStuff()
    {
        this.doStuff = new DoStuff();
    }

    internal NeedToDoStuff(IDoStuff doStuff)
    {
        this.doStuff = doStuff;
    }

    void PleaseDoStuff()
    {
        doStuff.DoSomething();
    }
}

Me gustaría usar Unity para crear una instancia de NeedToDoStuff en mi controlador y también ser responsable de crear la clase DoStuff internamente, en lugar de que el constructor llame a new directamente. Sin embargo, la única forma en que puedo hacer esto es hacer que la interfaz IDoStuff y la clase DoStuff sean públicas, lo que me parece incorrecto. Parece incorrecto ya que estos son detalles de implementación y solo son relevantes dentro de la propia biblioteca. Entiendo que con la inversión de control, está permitiendo que la aplicación de nivel superior tome decisiones sobre sus implementaciones subyacentes a través de la configuración de algún tipo, pero ¿debería esto significar que ya no hay necesidad de un sistema interno, etc.?

Respuestas a la pregunta(3)

Su respuesta a la pregunta