Exploring Dependency Injection in C# - part 1