Keep Dependency Injection Simple

It seems we're using the same words to mean different things.

When I say "dependency injection" I only mean the act of injecting the dependency. When you write "DI" here, you seem to be referring to "DI *containers*". A DI container is not DI. You don't need to use a DI container to do DI. Indeed, this assumption that one needs a container to do DI creates most of the problem that most people seem to associate with DI.