AutoMapperAllowAdditiveTypeMapCreationdoesn'tmergemappings
创始人
2024-09-23 11:30:54
0

AutoMapper是一个非常流行的.NET对象映射库。在使用AutoMapper时,存在一些复杂的映射场景需要进行配置。其中,AllowAdditiveTypeMapCreation在多个映射规则中扮演了一个非常重要的角色。它允许在运行时动态添加、重写已有的类型映射。但是,存在一个问题:当重写类型映射时,新的映射不会与旧的映射合并,而是会取代旧的映射。

以下是一个示例:

public class Source
{
    public int Value1 { get; set; }
    public int Value2 { get; set; }
}

public class Destination
{
    public int Value1 { get; set; }
}

// 创建旧映射
var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap()
        .ForMember(dest => dest.Value1, opt => opt.MapFrom(src => src.Value1));
});

// 重写映射
config.CreateMapper().Configuration.AllowAdditiveTypeMapCreation = true;
config.CreateMapper().Configuration.CreateMap()
    .ForMember(dest => dest.Value2, opt => opt.MapFrom(src => src.Value2));

// 测试映射
var source = new Source { Value1 = 1, Value2 = 2 };
var mapper = config.CreateMapper();
var destination = mapper.Map(source);

// 预期:Value1 = 1、Value2 = 2
// 实际:Value1 = 0、Value2 = 2

该示例的目的是将一个Source对象映射到Destination对象,并添加了一个新的Value2属性映射。由于AllowAdditiveTypeMapCreation允许动态扩展现有的类型映射,因此该示例在映射之前先手动创建了一个类型映射,然后通过AllowAdditiveTypeMapCreation启用动态扩展。映射过程应该将Value1映射为1,并将Value2映射为2。但是实际上,该映射只能映射Value2,而Value1被映射为0。

解决该问题的方法非常简单。只需要使用CreateMap的重载方法,使用源类型和目标类型作为参数。如果

相关内容

热门资讯

受玩家影响!wepoker有没... 受玩家影响!wepoker有没有插件,德普之星透视辅助,原来是有挂(有挂解密)进入游戏-大厅左侧-新...
于此同时!佛手在线大菠萝技巧,... 于此同时!佛手在线大菠萝技巧,德扑之星有辅助软件吗,好像确实有挂(有挂方法)一、德扑之星有辅助软件吗...
现有说明如下!wejoker辅... 现有说明如下!wejoker辅助软件视频,智星菠萝有挂吗,切实真的是有挂(有挂教程)暗藏猫腻,小编详...
黑科技技巧!哈糖大菠萝挂法,德... 黑科技技巧!哈糖大菠萝挂法,德普之星私人局透视,一贯是真的有挂(有挂教程)1、用户打开应用后不用登录...
昨日!We poker辅助器下... 昨日!We poker辅助器下载,德扑之星透视辅助插件,竟然存在有挂(有挂技巧);德扑之星透视辅助插...
值得注意的是!wepoker分... 值得注意的是!wepoker分析,德扑之星辅助工具如何设置,竟然是有挂(有挂功能)所有人都在同一条线...
今天上午!wpk俱乐部是真的吗... 今天上午!wpk俱乐部是真的吗,智星德州插件最新版本更新内容详解,果然确实有挂(有挂头条)1、许多玩...
为切实保障!菠萝德州透视脚本,... 为切实保障!菠萝德州透视脚本,德普之星透视辅助软件是真的吗,切实真的有挂(讲解有挂)1、不需要AI权...
推出新举措!德普之星辅助软件,... 推出新举措!德普之星辅助软件,德普之星怎么设置埋牌,切实是真的有挂(有挂细节)1、德普之星怎么设置埋...
近期!wepoker插件程序激... 近期!wepoker插件程序激活码,智星德州插件最新版本更新内容详解,总是确实有挂(有挂方法)1、智...