В приложении 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
Я заметил, что когда я не устанавливаю продолжительность жизни, я думаю, что по умолчанию Transient, и я каждый раз получаю другой экземпляр IMapper
- и когда я пытаюсь использовать экземплярЯ получаю:
Expression of type 'System.Object' cannot be used for assignment to type 'AutoMapper.IMapper'
Эта ситуация исчезает, когда я устанавливаю продолжительность жизни.Это ожидаемое поведение?Если нет, то как можно инициализировать Imapper (поскольку .Initialize()
является устаревшим?)
PS: Ламар рекомендует использовать ConfigureContainer(ServiceRegistry serviceRegistry)
вместо значения по умолчанию ConfigureServices(IServiceCollection serviceRegistry)
, но это в основном то же самое, поэтому я не будуне думаю, что это материально, так как ошибка возникает в любом случае.