SOLID Principles in C# - Dependency Inversion Principle