Autofac RegisterAssemblyTypes尝试解析所有公共类型

时间:2020-10-26 10:29:09

标签: autofac

快速问题:我一直在项目中使用带有asp.net core的autofac,并且我注意到它在将其更新为最新的nuget包后尝试在配置期间解析所有类型(来自Autofac.Extensions.DependencyInjection 5.0.1至7.0.2)。顺便说一句,这是用于注册类型的代码:

builder.RegisterAssemblyTypes(typeof(Utilizador).Assembly)
               .AsImplementedInterfaces()
               .AsSelf();

直到现在,我还没有看到这种行为。这种新方法的问题在于它将尝试解决永远不会通过DI注入的类型。例如,它抱怨没有公共构造函数事件的公共类,尽管这些类永远不会通过DI创建。

有人可以指出更改发生的时间吗?

这是否意味着现在我必须明确过滤所需的类型?

谢谢。

1 个答案:

答案 0 :(得分:0)

这不是什么新鲜事。

您可以使用以下内容过滤掉这些内容:

   builder.RegisterAssemblyTypes(ThisAssembly)
                .Where(type => type.GetConstructors(BindingFlags.Public).Any())
                .AsImplementedInterfaces();