AutoMapper наследование с "новым" модификатором

Я обновляю свой проект с AutoMapper версии 4.2.1 до 6, и в новой версии я получаю неожиданное поведение.

Классы

class Opportunity : OpportunityLite
{
}

class OpportunityLite
{
    public DealerOpportunityLite DealerOpportunity { get; set; }
}

class DealerOpportunity : DealerOpportunityLite
{
    public new string BranchCode { get; set; }
}

class DealerOpportunityLite
{
    public string BranchCode { get; set; }
}

Конфигурация Mapper

AutoMapper.Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Opportunity, OpportunityLite>();
    cfg.CreateMap<DealerOpportunity, DealerOpportunityLite>();
});

Версия: 4.2.1

Если я выполню следующую карту:

Opportunity oppLite = new Opportunity
{
    DealerOpportunity = new DealerOpportunity
    {
        BranchCode = "00168"
    }
};

var opp = AutoMapper.Mapper.Map<Opportunity, OpportunityLite>(oppLite);

Значение свойства "opp.DealerOpportunity.BranchCode" равно: 00168.

С версии 5.0.2 до 6.2.2

В этих версиях значение одного и того же свойства: null

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

0 ответов

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