Introduction to Dependency Injection in C#