Articles → .NET DESIGN PATTERN → Dependency Inversion Principle In C#

Dependency Inversion Principle In C#






What Does The Dependency Inversion Principle Say?




  1. High-level modules should not depend upon the low-level module. Both modules should depend upon the abstractions.
  2. Abstractions should not depend upon details. Details should depend upon the abstractions.



Example




public class PresentationLayer { 
    public string GetMessage() {
        ApplicationLayer applicationLayer = new ApplicationLayer();
        return applicationLayer.GetWelcomeMessage();
    }
}
public class ApplicationLayer {
    public string GetWelcomeMessage() {
        return "Welcome Karan";
    }
}




Picture showing the traditional development method where high level module is dependent on low level module
Click to Enlarge



  1. Create an interface.
  2. Implement the low-level module with the interface.
  3. Call the low-level module in the high-level module using an interface


public class PresentationLayer { 
    IMessage _message;
    public PresentationLayer(IMessage message) {
        this._message = message;
    }
 
    public string GetMessage() {
        return _message.GetWelcomeMessage();
    }
}
 
public interface IMessage {
    string GetWelcomeMessage();
}
 
public class ApplicationLayer: IMessage {
    public string GetWelcomeMessage() {
        return "Welcome Karan";
    }
}


Picture showing the Dependency Inversion principle method of implementation
Click to Enlarge


Posted By  -  Karan Gupta
 
Posted On  -  Monday, December 28, 2020

Query/Feedback


Your Email Id
 
Subject
 
Query/FeedbackCharacters remaining 250