Wie kann ich Unity mit internen Klassen verwenden?

Ich habe eine Web-API-Anwendung und verwende Unity für die Abhängigkeitsinjektion. Die Anwendung verwendet eine Bibliothek, die ein Interface IDoStuff und eine Klasse enthält, die das Interface implementiert:

internal interface IDoStuff
{
    void DoSomething();
}

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

Die Bibliothek hat auch eine öffentliche Klasse, die Dinge erledigen muss:

public class NeedToDoStuff
{
    private IDoStuff doStuff;

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

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

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

Ich möchte Unity verwenden, um eine NeedToDoStuff-Instanz in meinem Controller zu erstellen und auch dafür verantwortlich zu sein, die DoStuff-Klasse intern zu erstellen, anstatt dass der Konstruktor new direkt aufruft. Die einzige Möglichkeit, dies zu tun, besteht darin, sowohl die IDoStuff-Schnittstelle als auch die DoStuff-Klasse öffentlich zu machen, was mir falsch erscheint. Es scheint falsch, da dies Implementierungsdetails sind und nur innerhalb der Bibliothek selbst relevant sind. Ich verstehe, dass Sie mit der Umkehrung der Steuerung der Top-Level-Anwendung erlauben, über eine Konfiguration eine Auswahl über die zugrunde liegenden Implementierungen zu treffen. Sollte dies jedoch bedeuten, dass kein internes usw. mehr erforderlich ist?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage