simple implementation of IOC container in C#