The clincher for either service locators or runtime dependency containers for me is that when a class explicitly requests a dependency in its logic, there is no reasonable way to discover from the outside that that dependency was ever something the class needed. It's a hidden dependency, and breaks the cohesion of the module.