Как определить отображение для вложенных классов с разными свойствами? - PullRequest
0 голосов
/ 22 мая 2019

У меня есть следующие классы

class Employment{
 public string Company{get; set;}
 public string Since{get; set;}
 public string Position{get; set;}
}

class Person{
 public string FullName {get; set;}
 public Employment Employment{get; set;}
}

Я хочу преобразовать его в следующий класс

class PersonEntity{
 public string FullName {get; set;}
 public string EmploymentCompany{get; set;}
 public string EmploymentSince{get; set;}
 public string EmploymentPosition{get; set;}
}

Я определил отображение следующим образом

mce.CreateMap<Person, PersonEntity>();

mce.CreateMap<Employment, PersonEntity>
.ForMember(d=>d.EmploymentCompany, o=>o.MapFrom(s=>s.Company))
.ForMember(d=>d.EmploymentSince, o=>o.MapFrom(s=>s.Since))
.ForMember(d=>d.EmploymentPosition, o=>o.MapFrom(s=>s.Position))
.ForAllOtherMembers(o=>o.Ignore())
;

Когда я запускаю, это дает мне первую ошибку в d.EmploymentCompany не отображается. если я добавляю Ignore (), то это дает ошибку при Employment, так как не отображается.

Как правильно отобразить это?

1 Ответ

0 голосов
/ 22 мая 2019

Правильный способ отображения вашего класса следующий:

 CreateMap<Person, PersonEntity>()
                .ForMember(d => d.EmploymentCompany, o => o.MapFrom(s => s.Employment.Company))
                .ForMember(d => d.EmploymentSince, o => o.MapFrom(s => s.Employment.Since))
                .ForMember(d => d.EmploymentPosition, o => o.MapFrom(s => s.Employment.Position)) ;
...