C# automapper中的映射列表
我是汽车制造商的新手。我有一个类,它有一个对象集合。我需要这个类映射到另一个具有不同名称的对象。我需要将员工映射到employeeDto。两个类都有不同的名称和不同的属性名称。如果它们有不同的名称,是否可以使用automapper进行映射C# automapper中的映射列表,c#,automapper,C#,Automapper,我是汽车制造商的新手。我有一个类,它有一个对象集合。我需要这个类映射到另一个具有不同名称的对象。我需要将员工映射到employeeDto。两个类都有不同的名称和不同的属性名称。如果它们有不同的名称,是否可以使用automapper进行映射 public class Employee { public string Name { get; set; } public string Address { get; set; } public List<Job> Jo
public class Employee
{
public string Name { get; set; }
public string Address { get; set; }
public List<Job> Jobs { get; set; }
}
public class Job
{
public string CompanyName { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public class EmployeeDto
{
public string Fullname { get; set; }
public string Location { get; set; }
public List<WorkExperience> WorkExperience { get; set; }
}
public class WorkExperience
{
public string NameOfCompany { get; set; }
public DateTime DateBegin { get; set; }
public DateTime DateEnd { get; set; }
}
公共类员工
{
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共列表作业{get;set;}
}
公开课工作
{
公共字符串CompanyName{get;set;}
公共日期时间起始日期{get;set;}
公共日期时间结束日期{get;set;}
}
公共类雇员
{
公共字符串全名{get;set;}
公共字符串位置{get;set;}
公共列表工作经验{get;set;}
}
公开课工作经验
{
公司的公共字符串名称{get;set;}
公共日期时间日期开始{get;set;}
公共日期时间日期结束{get;set;}
}
您可以配置映射以手动处理作业
列表到工作经验
列表。请参阅AutoMapper文档中的
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.Fullname, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.Location, opt => opt.MapFrom(src => src.Address))
.ForMember(dest => dest.WorkExperience, opt => opt.MapFrom(src => src.Jobs));
cfg.CreateMap<Job, WorkExperience>()
.ForMember(dest => dest.NameOfCompany, opt => opt.MapFrom(src => src.CompanyName))
.ForMember(dest => dest.DateBegin, opt => opt.MapFrom(src => src.StartDate))
.ForMember(dest => dest.DateEnd, opt => opt.MapFrom(src => src.EndDate));
});
AutoMapper.Mapper.Initialize(cfg=>
{
cfg.CreateMap()
.ForMember(dest=>dest.Fullname,opt=>opt.MapFrom(src=>src.Name))
.ForMember(dest=>dest.Location,opt=>opt.MapFrom(src=>src.Address))
.ForMember(dest=>dest.WorkExperience,opt=>opt.MapFrom(src=>src.Jobs));
cfg.CreateMap()
.ForMember(dest=>dest.NameOfCompany,opt=>opt.MapFrom(src=>src.CompanyName))
.ForMember(dest=>dest.DateBegin,opt=>opt.MapFrom(src=>src.StartDate))
.ForMember(dest=>dest.DateEnd,opt=>opt.MapFrom(src=>src.EndDate));
});
此外,如果您希望以相反的方向转换,可以添加以避免代码重复。您可以配置映射以手动处理
作业
列表到工作体验
列表。请参阅AutoMapper文档中的
AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.Fullname, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.Location, opt => opt.MapFrom(src => src.Address))
.ForMember(dest => dest.WorkExperience, opt => opt.MapFrom(src => src.Jobs));
cfg.CreateMap<Job, WorkExperience>()
.ForMember(dest => dest.NameOfCompany, opt => opt.MapFrom(src => src.CompanyName))
.ForMember(dest => dest.DateBegin, opt => opt.MapFrom(src => src.StartDate))
.ForMember(dest => dest.DateEnd, opt => opt.MapFrom(src => src.EndDate));
});
AutoMapper.Mapper.Initialize(cfg=>
{
cfg.CreateMap()
.ForMember(dest=>dest.Fullname,opt=>opt.MapFrom(src=>src.Name))
.ForMember(dest=>dest.Location,opt=>opt.MapFrom(src=>src.Address))
.ForMember(dest=>dest.WorkExperience,opt=>opt.MapFrom(src=>src.Jobs));
cfg.CreateMap()
.ForMember(dest=>dest.NameOfCompany,opt=>opt.MapFrom(src=>src.CompanyName))
.ForMember(dest=>dest.DateBegin,opt=>opt.MapFrom(src=>src.StartDate))
.ForMember(dest=>dest.DateEnd,opt=>opt.MapFrom(src=>src.EndDate));
});
此外,如果您希望以相反的方向转换,可以添加以避免代码重复。具有列表的属性如何?@RamppyDumppy:创建两个映射。首先将属性列表a映射到属性列表b,然后创建一个新映射,将列表a的类型映射到列表b的类型。具有列表的属性如何?@RamppyDumppy:创建两个映射。首先将属性列表a映射到属性列表b,然后创建一个新映射,将列表a的类型映射到列表b的类型。