Использование профилей автоматического преобразования для сопоставления двух разных типов в один - PullRequest
0 голосов
/ 07 декабря 2018

Можно ли сопоставить (используя AutoMapper) два разных объекта в одном и том же объекте и как?

Ниже приведен пример для описания случая (имейте в виду, что это концептуальный пример):

namespace AutomapperTest.Profiles
{
    public class CarWrapper
    {
        public CarWrapper(Car car, string customerName)
        {
            CustomerName = customerName;
            Car = car;
        }

        public string CustomerName { get; set; }
        public Car Car { get; set; }
    }

    public class Car
    {
        public string ModelName { get; set; }
        public int SerialNumber { get; set; }
    }

    public class CarView
    {
        public string Customer { get; set; }
        public string Model { get; set; }
        public int Serial { get; set; }
    }

    public class CarProfile : Profiles
    {
        public CarProfile()
        {
            // Map profile of Car with specific add-ons from CarWrapper
            CreateMap<CarWrapper, CarView>()
                .ForMember(dst => dst.Customer, opt => opt.MapFrom(src => src.CustomerName))
                .ForMember(dst => dst, opt => opt.MapFrom(src => src.Car)); // <-- This will throw an exception.

            // Map profile of Car
            CreateMap<Car, CarView>()
                .ForMember(dst => dst.Model, opt => opt.MapFrom(src => src.ModelName))
                .ForMember(dst => dst.Serial, opt => opt.MapFrom(src => src.SerialNumber));
        }
    }
}

Что я хочу сделать, это сказать первому CreateMap использовать другой CreateMap для вложенного типа родителя:

.ForMember(dst => dst, opt => opt.MapFrom(src => src.Car));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...