Как отобразить два класса с помощью Auto Mapper в c #, когда у целевого класса есть массивы объектов - PullRequest
0 голосов
/ 24 октября 2018

Ниже приведен фрагмент сопоставления с классами:

Mapper.Initialize(cfg =>
 {
   cfg.CreateMap<STest, ETest>().ForMember(d => d.customFields[0].stringValue, o => o.MapFrom(s => s.val));
 }
);

var result = Mapper.Map<ETest>(JsonDeseriazedSource);
var serialized = JsonConvert.SerializeObject(result, Formatting.Indented);

И это исходные и целевые классы для сопоставления:

//source class
  public class STest
    {
        public string Id { get; set; }
        public string val { get; set; }
    }

// destination class
  public class ETest
    {
        public string Id { get; set; }
        public Customfield[] customFields { get; set; }
    }
  public class Customfield
    {
        public string id { get; set; }
        public string fieldName { get; set; }
        public string stringValue { get; set; }
    }

Мне нужно отобразить stringValue в объекте Customfield (пункт назначения) от val в Stest (источник).

Заранее спасибо !!

1 Ответ

0 голосов
/ 24 октября 2018

Если я правильно понимаю ваш вопрос, вы можете попробовать это:

Mapper.Initialize(cfg =>
                 {
                    cfg.CreateMap<STest, Customfield>()
                        .ForMember(d => d.stringValue, o => o.MapFrom(s => s.val));
                    cfg.CreateMap<STest[], ETest>()
                        .ForMember(d => d.customFields, o => o.MapFrom(s => s.Select(Mapper.Map<Customfield>)));
                 });

var sTests= new[] { new STest { Id = "1", val = "val1" }, new STest { Id = "2", val = "val2" } };
var result = Mapper.Map<ETest>(sTests);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...