如何将ICollection <T>映射到从List <T>

时间:2019-06-12 09:02:14

标签: c# automapper

我正在建立模型与视图模型之间的映射,并且试图将ICollection映射到从List派生的类

我尝试在ListItemClassVM和ICollection之间进行映射,但是出现错误“参数类型不匹配”

选项1映射与此配合使用:

public class ParentVM
{
    public List<ListItemClass> ListItemClasses { get; set; }
}

选项二映射不起作用:

public class ParentVM
{
    public ListItemClassVM ListItemClasses { get; set; }
}

public ListItemClassVM : List<ListItemClass>
{

}

映射设置:

public ModelClass_ParentVM_Profile()
    {
        CreateMap<ModelClass, ParentVM>()
            .ForMember(d => d.ListItemClasses, o => o.MapFrom(i => i.ModelCollection))
            ;

        CreateMap<ParentVM, ModelClass>()
            ;

    }

尝试设置映射,因此选项二将进行映射。

1 个答案:

答案 0 :(得分:0)

我认为有更多方法可以解决该问题,但是您无法摆脱从ICollection 到ListItemClassVM的手动换位。 最简单的方法可能是将一个接受ICollection 的构造函数添加到您的ListItemClassVM中,并使用ICollection中的元素初始化自身,然后可以执行以下操作:

 CreateMap<ModelClass, ParentVM>()
        .ForMember(d => d.ListItemClasses, o => o.MapFrom(i =>new ListItemClassVM (i.ModelCollection)))
        ;