使用“new”修饰符

时间:2018-05-24 15:15:12

标签: c# inheritance automapper automapper-5 automapper-4

我正在将我的项目从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; }
}

映射器配置

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

如何在不在映射配置中添加“ForMember”的情况下更新AutoMapper以获得4.2.1版的相同结果? 不幸的是,我有很多这种类模式的情况。

0 个答案:

没有答案