The three approaches (Constructor Injection, Method Injection and Property Injection) are OK if we have only one level of dependency, but think about big software where we have chained and nested dependencies which makes it quite complicated to implement the dependency injection.