2016-07-27 5 views
0

Ich versuche Dependency Injection zu verstehen. Ich habe ein Beispiel dafür erstellt. Kann jemand bitte sagen, ist dieses Beispiel richtig ist oder nichtBenötigen Sie eine Klarstellung zur Abhängigkeitsinversion Beispiel

public interface IEngine 
    { 
     void Start(); 
     void SayHelloFromEngine(); 
    }; 
    public class Engine :IEngine 
    { 
     public Engine(){ 
     } 
     public void Start() 
     { 
      Console.Write ("Hey it is started"); 
     } 
     public void SayHelloFromEngine() 
     { 
      Console.Write ("Hello from Engine"); 
     } 
    } 
    public class Car 
    { 
     private readonly IEngine _engine; 
     public Car(IEngine engine){ 
      _engine=engine; 
      _engine.SayHelloFromEngine(); 
     } 

    } 

und meine Objekterstellung

Car car2 = new Car (new Engine()); 

Bitte führen Sie, dass ich falsch mache, welche Schritte wäre.

Antwort

0

Ihr Beispiel sieht gut aus mir. So tendiere ich dazu, Dinge zu strukturieren.

Es gibt einen guten Stapelüberlauf Thread here mit einigen nützlichen Links und Posts.

Die Sache, an der ich denke, ist, wie Sie die Implementierungen erstellen und Ihre Abhängigkeiten verwalten. Sie können Ihre eigenen Factory-Klassen/Methoden dafür erstellen oder ein vorhandenes Framework verwenden, etwa Ninject.

+0

Danke für die Referenzen – Sahithi

0

Es ist üblich, eine Wächterklausel zu Ihren Konstruktoren hinzuzufügen, die Abhängigkeiten annehmen, so dass Sie sofort eine Ausnahme auslösen können, wenn jemand versucht, eine Null-Abhängigkeit zu übergeben.

Ein großer Teil der Abhängigkeitsinjektion ist, wie Sie Ihre Abhängigkeiten erstellen. Wenn Sie Car car2 = new Car (new Engine()); sagen, codieren Sie Ihre Abhängigkeit, die den Zweck der Abhängigkeitsinjektion vereitelt. Sie sollten eine einzige composition root haben, in der alle Ihre Abhängigkeiten definiert sind. Wenn Sie sich nicht sicher sind, ob Sie etwas richtig machen, ist es eine gute Faustregel, dass Sie keine Ihrer Abhängigkeiten irgendwo anders platzieren sollten.

Noch eine Sache; Wenn Sie Ihre Abhängigkeiten komponieren, stellen Sie sicher, dass Sie nicht fallen in die Falle eines service locator.

Verwandte Themen