You won't have to add the dependency at the top level (root) object. You can add the dependency to the appropriate place in the hierarchy and Unity will inject the object (as long as it can be resolved). So if the root object has a requirement
for a new dependency then that would have to be added to the root object's constructor.
However, Unity is responsible for object construction so as long as the container is configured properly (to allow resolving of the dependency) then the code should not need to change since Unity will handle instantiating the object with the appropriate
If you are very concerned about breaking changes on an interface (public API) then you would have to manage those carefully. For example if using a service oriented approach, then you would provide an interface to the consumer and (root) object construction
would be done by a factory object using Unity (that the consumer does not know anything about). It's a similar approach with ASP.NET MVC controllers.
If you are creating more of a Framework like ASP.NET MVC and not a typical application then you will probably have other issues to consider as well and you might consider creating facade classes to allow easy use of the framework without exposing internal
details. This is a good post:
Enterprise Library support engineer