Automapper Cant将对象映射到C#中的类

问题描述 投票:0回答:1

我有一个导出方法,该方法从Ajax调用中获取数据,然后通过相关的ID-Class映射它,并使用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;
        }
c# mapping automapper
1个回答
-1
投票

您可以这样使用AutoMapper:

    public static List<T> MapDynamicList<T,TT>(List<TT> obj)
    {
        var config = new MapperConfiguration(x =>
        { 
            x.CreateMap<TT, T>();                 
        }); 

        var mapper = config.CreateMapper();

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

        return newModel;
    }

您可以这样发布模型:

    [HttpPost]
    public ExportResultExcel ExportReport(int Id, List<MyModel> obj)

您可以像这样使用MapDynamicList:

    var model = ReportHelper.MapDynamicList<CusMonthlyDiscountReportModel, MyModel>(data);
© www.soinside.com 2019 - 2024. All rights reserved.