Automapper перезаписывает отсутствующее свойство источника в списке дочерними объектами
У меня проблема с Automapper. Я установил тестовое приложение для Windows, ниже приведен код. Также посмотрите на комментарии после каждого MessageBox:
public class FirstClass
{
public string FirstProp { get; set; }
public IList Children { get; set; }
}
public class FirstClassChild
{
public string FirstChildProp { get; set; }
}
public class SecondClass
{
public string FirstProp { get; set; }
public string SecondProp { get; set; }
public IList Children { get; set; }
}
public class SecondClassChild
{
public string FirstChildProp { get; set; }
public string SecondChildProp { get; set; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
AutoMapper.Mapper.CreateMap();
AutoMapper.Mapper.CreateMap();
var f = new FirstClass { FirstProp = "FirstClass" };
f.Children = new List { new FirstClassChild { FirstChildProp = "FirstClass" } };
var s = new SecondClass { FirstProp = "SecondClass", SecondProp = "SecondClass" };
s.Children = new List { new SecondClassChild { FirstChildProp = "SecondClass", SecondChildProp = "SecondClass" } };
AutoMapper.Mapper.Map(f, s);
var fc = new FirstClassChild { FirstChildProp = "FirstClass" };
var sc = new SecondClassChild { FirstChildProp = "SecondClass", SecondChildProp = "SecondClass" };
AutoMapper.Mapper.Map(fc, sc);
MessageBox.Show(sc.FirstChildProp);//FirstClass as expected
MessageBox.Show(sc.SecondChildProp);//SecondClass as expected
MessageBox.Show(s.FirstProp);//FirstClass as expected
MessageBox.Show(s.SecondProp);//SecondClass as expected
MessageBox.Show(s.Children.First().FirstChildProp);//FirstClass as expected
MessageBox.Show(s.Children.First().SecondChildProp);//Empty not expected!!
}
}
Что я могу сделать, чтобы избежать этого? Ожидается ли такое поведение? В любом случае, кто-нибудь может подсказать мне, как сделать SecondClass дочерним SecondChildProp, чтобы остаться "Второй класс" как это происходит до отображения.