You've implemented your API using StrangeIoC. It's unsupported for now and it's really hard to refactor into the regular patterns. We don't use IoC on any of our projects because it's very hard to maintain. In a case of StrangeIoC, it's very hard to overview overall execution flow. For ex. Zenject can show UML graph for all bindings. But still, it's anti-pattern for a big project from our perspective.