Внедрение зависимостей для Automapper — AutoMapper.AutoMapperMappingException: «Отсутствует конфигурация карты типов илиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Внедрение зависимостей для Automapper — AutoMapper.AutoMapperMappingException: «Отсутствует конфигурация карты типов или

Сообщение Гость »


Когда я запускаю эту строку кода var FlattenedIncident = _mapper.Map(incident);, она прерывается с этим исключением

AutoMapper.AutoMapperMappingException: 'Отсутствует конфигурация карты типов или неподдерживаемое сопоставление.'

Раньше я использовал консольный проект (без внедрения зависимостей) и мог без проблем запустить эту строку.

Это часть моего кода

var mapperConfig = AutoMapperConfig.ConfigureMappings(); IMapper Mapper = MapperConfig.CreateMapper(); // код удален для краткости var FlattenedIncident = Mapper.Map(инцидент); // этот способ работает Затем я провел рефакторинг своего кода, переместив уровень сервиса (который включает приведенный выше код) в проект API, и использовал внедрение зависимостей для создания экземпляра преобразователя.

публичный класс MyService: IMyService { частный IMapper только для чтения _mapper; общественный ServiceCloudSqlService (сопоставитель IMapper) { _mapper = картограф; } общедоступное асинхронное обновление задачи() { // var mapperConfig = AutoMapperConfig.ConfigureMappings(); // IMapper Mapper = MapperConfig.CreateMapper(); // код удален для краткости var FlattenedIncident = _mapper.Map(инцидент); // этот способ не работает. Отсутствует конфигурация сопоставления типов или неподдерживаемое сопоставление. } } И именно так я называю уровень сервиса из консольного проекта.

публичный интерфейс IConsoleApp { void Run(string[] args); } общедоступный класс ConsoleApp: IConsoleApp { частный только для чтения IMyService _myService; частный IMapper только для чтения _mapper; общедоступное ConsoleApp (IMyService myService, сопоставитель IMapper) { _myService = мойService; _mapper = картограф; } public void Run(string[] args) { _myService.Обновление(); } } и в консольном проекте program.cs

Программа общедоступного класса { public static void Main(string[] args) { используя var хост = CreateHostBuilder(args).Build(); используя область var = хост.Services.CreateScope(); var consoleApp =scope.ServiceProvider.GetRequiredService(); consoleApp.Run(args); } общедоступный статический IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((контекст, сервисы) => { Services.AddAutoMapper(typeof(Program).Assembly); Services.AddScoped(); Services.AddScoped(); }); } а вот и другие коды, которые никогда не менялись
публичный статический класс AutoMapperConfig { общедоступная статическая MapperConfiguration ConfigurationMappings() { вернуть новую MapperConfiguration(cfg => { cfg.AddProfile(); }); } } открытый класс IncidentProfile: AutoMapper.Profile { публичный профиль инцидента() { CreateMap(); } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»