我的课程看起来像这样:
public class Student{
public string Name { get; set; }
public string Id { get; set; }
public List<Course> Courses { get; set; }
public string Address { get; set; }
}
public class Course{
public string Id { get; set; }
public string Description { get; set; }
public Date Hour { get; set; }
}
我想使用 AutoMapper
将Student类映射到以下类public class StudentModel{
public string Id { get; set; }
public StudentProperties Properties { get; set; }
}
其中StudentProperties是学生班的其余属性
public class StudentProperties{
public string Name { get; set; }
public List<Course> Courses { get; set; }
public string Address { get; set; }
}
基于AutoMapper文档(https://github.com/AutoMapper/AutoMapper/wiki),我们可以使用自定义解析器在执行映射时解析目标成员。 但我不想为解析器添加新课程。
我想知道是否有一种简单的方法来执行映射,只需执行这样的简单配置:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Student, StudentProperties>();
cfg.CreateMap<Student, StudentModel>();
});
答案 0 :(得分:2)
以下是一个适用于您的选项,并会对.wrapper {
position: relative;
}
和AutoMapper
使用StudentModel
:
StudentProperties
在这里,我们使用Mapper.Initialize(cfg =>
{
cfg.CreateMap<Student, StudentProperties>();
cfg.CreateMap<Student, StudentModel>()
.ForMember(dest => dest.Properties,
opt => opt.ResolveUsing(Mapper.Map<StudentProperties>));
});
,但使用ResolveUsing
版本以避免创建新类。此Func<>
本身只是Func<>
,已经知道如何从Mapper.Map
映射到Student
。
答案 1 :(得分:1)
我认为你可以尝试做那样的事情
CreateMap<Student, StudentModel>()
.ForMember(dist => dist.Properties,
opt => opt.MapFrom(src => Mapper.Map<StudentProperties>(src)))
答案 2 :(得分:0)
cfg.CreateMap<Student, StudentModel>()
.ForMember(
x => x.Properties,
x => x.ResolveUsing((src) => {
return new StudentProperties(){
Name = src.Name,
Courses = src.Courses,
Address = src.Address
}));