Глубокая модель генерируется кодом с большим количеством массивов (например, код, созданный прокси-сервером WCF на основе wsdl), который должен быть заполнен уплощенной моделью представления.Между двумя моделями нет соглашений об именах.
Плоская модель выглядит, например, следующим образом:
public class ViewModel
{
public string Item1 { get; set; }
public string Item2 { get; set; }
}
Глубокая модель выглядит, например, следующим образом:
public class DeepLevel0
{
public DeepLevel1 Level1 { get; set; }
}
public class DeepLevel1
{
public string Prop1;
public DeepLevel2[] Level2 { get; set; }
}
public class DeepLevel2
{
public string Prop2;
public string Prop3;
}
Конечный результат должен быть следующим:
DeepLevel0.Level1.Prop1 = ViewModel.Item1
DeepLevel0.Level1.Level2[0].Prop2 = ViewModel.Item2
DeepLevel0.Level1.Level2[0].Prop2 = null;
Мне очень нравится система проверки в AutoMapper, зная, что вы взялись за все свойства.
Я получил следующую работу (но потерялпроверка):
Mapper.CreateMap<ViewModel, DeepLevel0>()
.ForMember(d => d.Level1, opt => opt.MapFrom(s =>
new DeepLevel1 {
Prop1 = s.Item1,
Level2 = new[]
{
new DeepLevel2
{
Prop2 = s.Item2,
Prop3 = null
}
}
}));
}
Есть ли другой лучший способ?