try to build a IoC framework (just DI not DL)