с учетом классов:
public class Person
{
public string Name { get; set; }
}
public class Student : Person
{
public int StudentId { get; set; }
}
public class Source
{
public Person Person { get; set; }
}
public class Dest
{
public string PersonName { get; set; }
public int? PersonStudentId { get; set; }
}
Я хочу использовать Automapper для сопоставления Source -> Dest.
Этот тест явно не проходит:
Mapper.CreateMap<Source, Dest>();
var source = new Source() { Person = new Student(){ Name = "J", StudentId = 5 }};
var dest = Mapper.Map<Source, Dest>(source);
Assert.AreEqual(5, dest.PersonStudentId);
Каков наилучший подход к отображению этого, учитывая, что «Person» на самом деле является интенсивно используемым типом данных во всей нашей доменной модели.
Редактировать: Цель состоит в том, чтобы сохранить объекты "Dest", у которых будут поля, определенные для всех свойств подтипов "Person". Следовательно, мы могли бы иметь исходные объекты, подобные следующему, и предпочли бы не создавать объекты Dest для каждой возможной комбинации подклассов «Person»:
public class Source2
{
public Person Value1 { get; set; }
public Person Value2 { get; set; }
public Person Value3 { get; set; }
public Person Value4 { get; set; }
public Person Value5 { get; set; }
}