Карта Список клиентов с автоматом

С помощью Automapper я пытаюсь сопоставить один объект другому. Одним из свойств является класс с именем Task, содержащий список клиентов. Другой класс называется Result и содержит количество клиентов, а также другой список клиентов.

Это мой текущий подход, который корректно заполняет информацию в свойствах заказа, но не дает результата, который все еще равен нулю. Как я могу получить список в результате? Как мне нужно изменить карты, и мне нужно создать карту в обоих направлениях, или это не нужно?

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<CustomerPost.RootObject, Customers.RootObject>();

    cfg.CreateMap<CustomerPost.Order, Customers.Order>();

    cfg.CreateMap<Customers.Result, CustomerPost.Task>();                   
    cfg.CreateMap<CustomerPost.Task, Customers.Result>()
        .ForMember(x => x.customerscount, opt => opt.Ignore())
        .ForMember(x => x.customerstotalcount, opt => opt.Ignore());
});
try
{
    Mapper.AssertConfigurationIsValid();
}
catch (AutoMapperConfigurationException ex)
{
    //TODO: Handle this
    throw ex;
}

var customer = Mapper.Map<CustomerPost.RootObject, Customers.RootObject>(input);

Вот мои текущие занятия (Заказчик):

    public class Result
    {
        public int customerstotalcount { get; set; }
        public int customerscount { get; set; }
        public List<Customer> customers { get; set; }
    }

    public class RootObject
    {
        public Status status { get; set; }
        public Order order { get; set; }
        public Result result { get; set; }
    }

CustomerPost:

    public class Task
    {
        public List<Customer> customers { get; set; }
    }

    public class RootObject
    {
        public Order order { get; set; }
        public List<Task> tasks { get; set; }
    }

1 ответ

Решение

Итак, решение моей проблемы состояло в том, что мое сопоставление не нашло "результат", поэтому я просто сопоставил свой RootObject следующим образом:

Mapper.Initialize(cfg =>
                        {
                            cfg.CreateMap<CustomerPost.RootObject, Customers.RootObject>()
                                .ForMember(x => x.status, opt => opt.Ignore())
                                .ForMember(x => x.order, opt => opt.Ignore())
                                .ForMember(dest => dest.result, src => src.MapFrom(opt => opt.tasks.FirstOrDefault()));

затем я пошел дальше и просто отобразил результат следующим образом:

var result = Mapper.Map<CustomerPost.Task, Customers.Result>(input.tasks.FirstOrDefault());

var customer = new Customers.Customer();
customer = result.customers.FirstOrDefault();

и просто привязал его к новому кастомобъекту. Тогда вся моя информация была передана как ожидалось

Другие вопросы по тегам