Как я могу использовать Unity с внутренними классами?

У меня есть приложение Web API и я использую Unity для внедрения зависимостей. Приложение использует библиотеку, содержащую интерфейс IDoStuff и класс, который реализует интерфейс:

internal interface IDoStuff
{
    void DoSomething();
}

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

В библиотеке также есть открытый класс, который должен что-то делать:

public class NeedToDoStuff
{
    private IDoStuff doStuff;

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

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

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

Я хотел бы использовать Unity для создания экземпляра NeedToDoStuff в моем контроллере, а также для того, чтобы отвечать за внутреннее создание класса DoStuff, а не конструктор, вызывающий new напрямую. Однако единственный способ сделать это - сделать интерфейс IDoStuff и класс DoStuff общедоступными, что мне кажется неправильным. Это кажется неправильным, поскольку это детали реализации и имеют отношение только к самой библиотеке. Я понимаю, что с инверсией управления вы позволяете приложению верхнего уровня делать выбор в отношении его базовых реализаций через какую-то конфигурацию, но должно ли это означать, что больше нет необходимости во внутреннем и т. Д.?

Ответы на вопрос(3)

Ваш ответ на вопрос