After years of people trying to convince me that Singletons Are Evil, I'm finding I have to use Dependency Injection because it's the latest design pattern (like singletons once were). But I can't get away from the code smell: passing around dependencies, sometimes deep down into a view hierarchy, is just another anti-pattern that we used to call tramp data (data that only gets passed into an entity just so it can be passed on to another entity).
I'm not asking this to provoke anyone, I genuinely want to know what people think about this and, more importantly, how are they dealing with it? I have seen first-hand insanely long chains of DI that took maybe half a day of solid hacking to implement, simply to remove a singleton. And then someone decided to add another dependency, and we had to go through the same process again. I do not believe this was worth the effort, and all those complex interfaces create fragility and future problems.