let’s say this scenario:
public class B {};
public class C
{
public C(B b){}
}
To resolve C from Autofac container, I have to register both B and C to container.
But, today I used Unity, it seems I just need to register B to container, then C can be resolved.
So Autofac can’t do as Unity do?
With out-of-the-box Autofac it is expected that every type you want to use is registered with the container, either directly using the
Register...methods or in bulk usingRegisterAssemblyTypes. But there are other options too, take a look at Nicholas article about resolving everything. So yes, Autofac can do what Unity does, but you’ll have to enable it.Update: actually, the “resolve anything” feature is built-in now, and you can do the following:
With the
AnyConcreteTypeNotAlreadyRegisteredSourceyou can actually resolve bothCandBwithout registering any of them.Note that the lifetime of services resolved by
AnyConcreteTypeNotAlreadyRegisteredSourcewill be “per dependency scope”.Note: this topic over at the Autofac discussion group is related.