Have to register every class before the autofac container can resolve?

前端 未结 1 894
夕颜
夕颜 2020-12-16 00:57

let\'s say this scenario:

public class B {};

public class C
{
     public C(B b){}
}

To resolve C from Autofac container, I have to regist

相关标签:
1条回答
  • 2020-12-16 01:06

    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 using RegisterAssemblyTypes. 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:

            var cb = new ContainerBuilder();
            cb.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
            return cb.Build();
    

    With the AnyConcreteTypeNotAlreadyRegisteredSource you can actually resolve both C and B without registering any of them.

    Note that the lifetime of services resolved by AnyConcreteTypeNotAlreadyRegisteredSource will be "per dependency scope".

    Note: this topic over at the Autofac discussion group is related.

    0 讨论(0)
提交回复
热议问题