在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)
,但它基本上是同一回事,因此我认为这并不重要,因为无论哪种方式都会出现错误。>