SOLID Principles - What is a Dependency Inversion Principle in Oops | C#