gpt4 book ai didi

c# - Automapper 未将 IEnumerable 映射到 Viewmodel 中的 IEnumerable

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:46 24 4
gpt4 key购买 nike

我定义了以下类;

Data.Models.Lists.List

Infrastructure.Models.Lists.List

两者都包含以下字段;

public int Id { get; set; }

public string Description { get; set; }

我还定义了这个 View 模型;

public class IndexViewModel
{
public IEnumerable<Infrastructure.Models.Lists.List> Lists { get; set; }
}

在我的 Automapper 配置中,我只是执行以下操作;

cfg.CreateMap< Data.Models.Lists.List, Infrastructure.Models.Lists.List>()

我认为这就足够了,但我还添加了这个;

cfg.CreateMap<IEnumerable<List>,Models.Lists.IndexViewModel>();

但是,当我尝试映射 Controller 中的项目时;

var items = ListsService.GetLists(CurrentPrincipal.Id);

var model = Mapper.Map<IndexViewModel>(items);

model.Lists 始终为 null,尽管 items 有 22 个。为了使此映射正常工作,还需要添加什么?

最佳答案

AutoMapper 会自动映射两个同名类型的属性。

为了像您的情况一样将整个源对象映射到目标对象属性,您必须明确指定:

cfg.CreateMap<IEnumerable<Data.Models.Lists.List>, Models.Lists.IndexViewModel>()
.ForMember(dest => dest.Lists, m => m.MapFrom(src => src));

关于c# - Automapper 未将 IEnumerable<T> 映射到 Viewmodel 中的 IEnumerable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com