AddAutoMapper(... assemblies [] ...)是否应该在工作之前定义ServiceLifetime.Singleton?

时间:2019-06-12 09:05:24

标签: automapper

在Mvc Core应用中,我正在使用

  • Automapper 8.1.1
  • Automapper.Extensions.Microsoft.DependencyInjection 6.1.1
  • Lamar 3.0.3

在配置ServiceCollection / ServiceRegistry时,我使用一种扩展方法来首先加载所有相关的程序集,以便反射在其中找到配置文件,然后对这些相同的程序集使用AddAutoMapper扩展方法:

   ...
   AppDomain.CurrentDomain.LoadAllAppAssemblies();
   ...

   serviceRegistry.AddAutoMapper(appAssemblies); //,ServiceLifetime.Singleton

我注意到,当我不设置寿命时,我认为默认值是“瞬态”,并且每次都得到一个IMapper的不同实例–当我尝试使用一个实例时, :

Expression of type 'System.Object' cannot be used for assignment to type 'AutoMapper.IMapper'

当我设定寿命时,这种情况就消失了。这是预期的行为吗?如果没有,那么将如何初始化Imapper(因为.Initialize()被取消了?)

PS:Lamar建议使用其ConfigureContainer(ServiceRegistry serviceRegistry)而不是默认的ConfigureServices(IServiceCollection serviceRegistry),但它基本上是同一回事,因此我认为这并不重要,因为无论哪种方式都会出现错误。

0 个答案:

没有答案