Heim > Backend-Entwicklung > C++ > Wie sollte ich für eine ordnungsgemäße Abhängigkeitsinjektion auf den Unity-Container in meiner Anwendung zugreifen?

Wie sollte ich für eine ordnungsgemäße Abhängigkeitsinjektion auf den Unity-Container in meiner Anwendung zugreifen?

DDD
Freigeben: 2024-12-29 13:11:14
Original
451 Leute haben es durchsucht

How Should I Access the Unity Container in My Application for Proper Dependency Injection?

So handhaben Sie den Zugriff auf Unity-Container in einer Anwendung

Bei der Verwendung eines Dependency-Injection-Frameworks wie Unity ist es wichtig zu überlegen, wie Sie mit dem Zugriff umgehen zum Container in Ihrer Anwendung. Diese Frage untersucht drei Optionen und untersucht den besten Ansatz gemäß den Prinzipien der Abhängigkeitsinjektion.

Singleton-Container:

Erstellen eines Singleton-Containers, auf den Sie überall in der Anwendung zugreifen können scheinen praktisch zu sein. Die Einführung einer Abhängigkeit vom Container zur Verwendung eines Dependency-Injection-Frameworks widerspricht jedoch den Prinzipien von DI.

Übergabe des Containers:

Die Übergabe des Unity-Containers an untergeordnete Klassen kann möglich sein werden umständlich und optisch unattraktiv. Außerdem führt es zu einer engen Kopplung und erschwert das unabhängige Testen Ihres Codes.

Konstruktorinjektion:

Der richtige Ansatz für DI ist die Verwendung von Konstruktorinjektion. Dazu gehört die Deklaration der Abhängigkeiten, die Ihre Klasse in ihrem Konstruktor benötigt. Unity verbindet diese Abhängigkeiten automatisch, wenn eine Instanz der Klasse erstellt wird.

Beispiel:

Betrachten Sie das Beispiel in der Frage:

public class TestSuiteParser
{
    private readonly TestSuite _testSuite;
    private readonly TestCase _testCase;

    public TestSuiteParser(TestSuite testSuite, TestCase testCase)
    {
        _testSuite = testSuite ?? throw new ArgumentNullException(nameof(testSuite));
        _testCase = testCase ?? throw new ArgumentNullException(nameof(testCase));
    }

    public TestSuite Parse(XPathNavigator someXml)
    {
        // Use the injected dependencies here
        foreach (XPathNavigator blah in aListOfNodes)
        {
            _testSuite.TestCase.Add(_testCase);
        }
    }
}
Nach dem Login kopieren

In Ihrem Kompositionsstamm würden Sie Unity dann wie folgt konfigurieren:

container.RegisterType<TestSuite, ConcreteTestSuite>();
container.RegisterType<TestCase, ConcreteTestCase>();
container.RegisterType<TestSuiteParser>();
Nach dem Login kopieren

Unter Verwendung der Konstruktorinjektion Unity fügt automatisch die erforderlichen Abhängigkeiten in die TestSuiteParser-Klasse ein und sorgt so für eine ordnungsgemäße DI und einfache Tests.

Das obige ist der detaillierte Inhalt vonWie sollte ich für eine ordnungsgemäße Abhängigkeitsinjektion auf den Unity-Container in meiner Anwendung zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage