Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
必须先注册每个类,autofac容器才能解析?_Autofac - Fatal编程技术网

必须先注册每个类,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)