Great explanation, glad to read. It's incredible how many code bases don't use DI. Definitely is worth investing on it.
Some feedback/opinion:
I would add that with DI alongside making your software testable, you also are making a huge step towards improving your Object Oriented Design(Because it ill make you think of the dependencies that an object should have).
I am a Java dev, I see that your code is in C# so I am unsure but I didn't see any reference to the difference between setter injection and constructor injection I think it is a very important thing(F.A.Q in Java interviews).
Also one final thought, I see you suggested Google Guice framework for Java, that's fine but perhaps Spring is the most widely used.