Можно ли сопоставить (используя 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));