I have an abstract base controller which has a constructor I hoped would be populated by autofac when the controllers were built.
public abstract class BaseContr
I don't have comment privileges to ask for more detail, but I'd need to see your registration code to understand what you expect and why the container isn't meeting those expectations.
As to your additional questions: there isn't necessarily a way for a class to do it's own resolving, but a class can take a dependency on an automatically resolvable object factory for a known type (which most often suffices). If you have registered A
, you can take a dependency on Func
. There are many relationship types like this in Autofac; see http://code.google.com/p/autofac/wiki/RelationshipTypes.
"Sharing the container" is discouraged because it tends to hide a class's dependencies. If a dependency on the container is taken, or referenced as a global "IoC" object, the expressiveness of specific dependencies is lost.
Resolving dependencies down the hierarchy shouldn't be a problem, since you're already using c'tor injection I'm not sure what your issue is there. There are ancillary concerns, such as modifying all your subclasses if your base class dependencies change. Fortunately, Autofac has an answer for that in Aggregate Services (http://code.google.com/p/autofac/wiki/AggregateService).
Autofac is a great, deep tool. One more suggestion, if you are just starting out please take some time to wrap your head around object lifetimes and lifetime scopes (especially http://nblumhardt.com/2011/01/an-autofac-lifetime-primer/). Good luck!