AddAutoMapper не загружает все сборки в ядре asp.net - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть следующий код, который добавляет autopper в мое приложение.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddHttpClient();

    services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}

AppDomain.CurrentDomain.GetAssemblies() возвращает только сборки, которые были загружены во время его вызова.Я вижу, что некоторые из моих сборок, которые содержат мои сопоставления, еще не загружены, и в результате сопоставления не загружаются, что возвращает мне ошибки об отсутствующих типах карт.

Как получить все сборки, на которые ссылается мой проект

1 Ответ

1 голос
/ 27 сентября 2019

Справка - Из официальных документов AutoMapper

ASP.NET Core

Существует пакет NuGet , который будетиспользуется с механизмом впрыска по умолчанию, описанным здесь и используется в этом проекте .

Вы определяете конфигурацию, используя profile .А затем вы дадите AutoMapper знать, в каких сборках определены эти профили, вызывая метод расширения IServiceCollection AddAutoMapper при запуске:

services.AddAutoMapper(profileAssembly1, profileAssembly2 /*, ...*/);

или типы маркеров:

services.AddAutoMapper(typeof(ProfileTypeFromAssembly1), typeof(ProfileTypeFromAssembly2) /*, ...*/);

Теперь вы можете внедрить AutoMapper во время выполнения в ваши сервисы / контроллеры:

public class EmployeesController {
    private readonly IMapper _mapper;

    public EmployeesController(IMapper mapper) => _mapper = mapper;

    // use _mapper.Map or _mapper.ProjectTo
}
...