There is some discussion that this model is a good idea:
http://lostechies.com/chadmyers/2009/07/14/just-say-no-to-poor-man-s-dependency-injection/
In my opinion, if you have a good default that is not logically an external dependency, then you should specify this default value. If your "default" really should not be the default, or will mix too much parts too much apart, do not use this template.
You connect your code by doing this, so I really think long and hard about what will be used as the default convenience for locally accessible default implementations, or if you really just use it as a crutch, and as a result strong related dependencies.
In addition, many people recommend using constructor injection only for necessary dependencies and using property nesting for optional dependencies. When you use the wrong DI human template, you make an optional (or not applicable) dependency. You might want to consider injecting properties for these cases with an additional dependency, as this is the pattern that many expect.
source share