When using IoC for dependency injection the most recommended use is constructor injection (as told by many articles), my question is :
Is it better to inject using the constructor parameters or passing the IoC container through the constructor to inject the classes needed, and what is more useful for unit testing ?
When using IoC for dependency injection the most recommended use is constructor injection (as
Share
Although passing the container through the constructor is better than making the container accessible as a singleton for the complete application, it is still a form of Service Locator (anti-pattern), and is not recommended. This has clear disadvantages:
Just inject the dependencies into the constructor, never* the container itself.
*Exception to this rule is when such class is located inside the appliation’s Composition Root. In that case it’s not considered to be the Simple Locator pattern, because that class is simply an infrastructure component.