What is dependency injection?
Dependency injection is a design pattern that allows us to develop loosely coupled code. It has many advantages such allowing unit testing to be easier, decoupling your class libraries, allowing much easier code reuse and allowing us to write less code.