Interfaces, Testing and Dependency Injection in C#