Dalej•LEKCJA 18 / 24

Wstrzykiwanie zależności

Kurs C# · Wyjaśnienie, przykłady, oczekiwany wynik i ćwiczenie.

Interfejs pozwala tworzyć klasy zależne od kontraktu, a nie konkretnej implementacji.

Cel lekcji

Poznać zagadnienie „Wstrzykiwanie zależności”, zrozumieć przykład i umieć zastosować podobny zapis we własnym programie.

Wyjaśnienie krok po kroku

Zależność przekazywana w konstruktorze może być łatwo zastąpiona w testach.

Najpierw przeanalizuj kod bez uruchamiania. Zwróć uwagę, jakie dane wykorzystuje program, co z nimi robi i skąd bierze się wynik pokazany pod przykładem.

Praktyczny przykład

Gdzie zobaczysz efekt: Konsola projektu .NET

Gdzie wkleić kod? Deklaracje klas i interfejsów umieść w osobnym pliku lub poza instrukcjami najwyższego poziomu; instrukcje wykonawcze uruchom w programie.

interface IMessage { string Get(); }
class Hello : IMessage { public string Get() => "Cześć"; }
class Service(IMessage message) { public string Run() => message.Get(); }
// Console.WriteLine(new Service(new Hello()).Run());

Przeczytaj kod linijka po linijce

  1. interface IMessage { string Get(); }Definiujemy nowy typ obiektu lub umowę dotyczącą jego zachowania.
  2. class Hello : IMessage { public string Get() => "Cześć"; }Definiujemy nowy typ obiektu lub umowę dotyczącą jego zachowania.
  3. class Service(IMessage message) { public string Run() => message.Get(); }Definiujemy funkcję lub metodę, której można użyć później.
Oczekiwany wynik / efektpo uruchomieniu przykładu
Cześć (po odkomentowaniu wywołania)

Jak utrwalić tę umiejętność?

Przepisz kod samodzielnie. Następnie zmień jedną wartość lub jedną instrukcję i spróbuj przewidzieć efekt. Dopiero potem uruchom zmienioną wersję. Jeśli wynik jest inny niż oczekiwany, porównaj kolejne linie.

Spróbuj samodzielnie

Utwórz alternatywną klasę implementującą IMessage.

To już koniec tej lekcji.

Jeśli rozumiesz przykład, oznacz lekcję jako ukończoną i przejdź dalej.