Должен ли AddAutoMapper (... assembly [] ...) определять ServiceLifetime.Singleton, прежде чем он заработает? - PullRequest
0 голосов
/ 12 июня 2019

В приложении 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), но это в основном то же самое, поэтому я не будуне думаю, что это материально, так как ошибка возникает в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...