https://medium.com/@KeyurRamoliya/c-dependency-injection-and-inversion-of-control-ioc-containers-755499982da5