Inversion of Control (IOC) with C#