Automapper: выравнивание по соглашению об именах свойств не работает - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу свести мою структуру данных к dto.

Мой исходный класс (упрощенный) выглядит так:

public class DeliveryNote
{
    public DeliveryNoteNested DeliveryNoteNestedInstance { get; set; }
    public string VehicleNo { get; set; }
}

public class DeliveryNoteNested
{
    public string No { get; set; }
    public string PlantNo { get; set; }
}

Мой dto (тоже упрощенный) похож на

public class DeliveryNoteDto
{
    public int Id { get; set; }
    public string No { get; set; }
    public string PlantNo { get; set; }
    public string VehicleNo { get; set; }
}

И затем я делаю свое сопоставление:

Mapper.Initialize(cfg => cfg.CreateMap<DeliveryNote, DeliveryNoteDto>());
var source = new DeliveryNote
{
    VehicleNo = "VehicleNo20",
    DeliveryNoteNestedInstance = new DeliveryNoteNested
    {
        No = "42",
        PlantNo = "PlantNo10"
    }
};
var dto = Mapper.Map<DeliveryNoteDto>(source);

В конце я ожидаю, что мои свойства Нет и PlantNo заполняются в соглашении об именах dto, но это не так.

КогдаЯ делаю

Mapper.Initialize(cfg => cfg.CreateMap<DeliveryNote, DeliveryNoteDto>()
                                    .ForMember(dest => dest.No, opt => opt.MapFrom(src => src.DeliveryNoteNestedInstance.No))
                                    .ForMember(dest => dest.PlantNo, opt => opt.MapFrom(src => src.DeliveryNoteNestedInstance.PlantNo)));

, это работает, но в моем реальном классе у меня есть около 50 свойств, и я хотел бы избежать такого кода котельной плиты, когда это возможно.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы также можете использовать

 CreateMap(typeof(DeliveryNote), typeof(DeliveryNoteDto))
     .AfterMap((s, d) => Mapper.Map(s.DeliveryNoteNested, d));
0 голосов
/ 05 февраля 2019

Основное соглашение будет

public class DeliveryNoteDto
{
    public int Id { get; set; }
    public string DeliveryNoteNestedInstanceNo { get; set; }
    public string DeliveryNoteNestedInstancePlantNo { get; set; }
    public string VehicleNo { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...