Automapper не может сопоставить объект с классом в C# - PullRequest
0 голосов
/ 09 мая 2020

У меня есть метод экспорта, который получает данные из вызова Ajax, затем сопоставляет их с соответствующим ID-классом и использует AutoMapper для сопоставления объекта с классом. Но всякий раз, когда я пытаюсь запустить код ниже, он говорит: «Automapper отсутствует конфигурация карты типов или неподдерживаемое сопоставление». Что мне здесь не хватает?

    [HttpPost]
    public ExportResultExcel ExportReport(int Id, object obj)
    {
        
        var result = new BaseResult<ExportResultExcel>();
        var reportObject = _reportHelper.GetObjectClass(Id);
        var propertyList = _reportHelper.GetPropertiesOfClass(reportObject);
        switch (Id)
        {
            case 1:
                Mapper.Initialize(cfg =>
                {
                    cfg.CreateMap<object, CusMonthlyDiscountReportModel>();
                });
                List<CusMonthlyDiscountReportModel> model = Mapper.Map<List<CusMonthlyDiscountReportModel>>(obj);
                var stream = exportService.GenerateDocumentReport(model, propertyList);
                result.Result = new ExportResultExcel
                {
                    Content = stream,
                    ContentType = ExportService.GetContentType(".xlsx"),
                    FileName = $"MonthlyCustomerInvoicesReport_{DateTime.Now}.xlsx"
                };
                break;
            case 2:
                //..........
            default:
                break;
        }
        return result.Result;
    }

Любая помощь будет принята с благодарностью. Спасибо

ИЗМЕНИТЬ 1

Я не получаю данные в виде списка, а затем создал для них MapDynamicList, чтобы сопоставить объект, но все равно получаю ту же ошибку.

public ExportResultExcel ExportReport(int Id, List<object> data)
        {
            switch (Id)
            {
                case 1:
                    var model = ReportHelper.MapDynamicList<CusMonthlyDiscountReportModel>(data);

А это моя функция MapDynamicList

public static List<T> MapDynamicList<T>(IEnumerable<object> obj)
        {
            var config = new MapperConfiguration(c => c.CreateMissingTypeMaps = true);
            var mapper = config.CreateMapper();

            var newModel = obj.Select(mapper.Map<T>).ToList();

            return newModel;
        }
...