必须先注册每个类,autofac容器才能解析?
让我们假设这个场景:必须先注册每个类,autofac容器才能解析?,autofac,Autofac,让我们假设这个场景: public class B {}; public class C { public C(B b){} } 要从Autofac容器解析C,我必须将B和C都注册到容器。 但是,今天我使用了,似乎我只需要注册B到容器,然后C就可以解决了 因此Autofac不能像Unity那样做?使用现成的Autofac,您希望使用的每种类型都会在容器中注册,可以直接使用Register…方法,也可以使用registerasemblytypes批量注册。但也有其他选择,看看吧。因此
public class B {};
public class C
{
public C(B b){}
}
要从Autofac容器解析C,我必须将B和C都注册到容器。
但是,今天我使用了,似乎我只需要注册B到容器,然后C就可以解决了
因此Autofac不能像Unity那样做?使用现成的Autofac,您希望使用的每种类型都会在容器中注册,可以直接使用
Register…
方法,也可以使用registerasemblytypes
批量注册。但也有其他选择,看看吧。因此,是的,Autofac可以做Unity所做的事情,但您必须启用它
更新:实际上,“解决任何问题”功能现在是内置的,您可以执行以下操作:
var cb = new ContainerBuilder();
cb.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
return cb.Build();
使用AnyConcreteTypeNotAlreadyRegisteredSource
您实际上可以解析C
和B
,而无需注册它们中的任何一个
请注意,AnyConcreteTypeNotAlreadyRegisteredSource
解析的服务生命周期将为
注意:在Autofac讨论组的讨论是相关的。默认的AnyConcreteTypeNotAlreadyRegisteredSource@JJS-这将是Autofac的一般默认生存期,即“每个依赖范围”(ref)