AutoMapper忽略了动态类型上未派生的属性,或者未完全限定的映射配置。
创始人
2024-09-23 13:00:25
0

在AutoMapper中,可以使用映射配置来处理动态类型上未派生或未完全限定的属性。以下是解决这个问题的代码示例:

首先,需要创建一个自定义的映射配置类,继承自AutoMapper的Profile类:

public class CustomMappingProfile : Profile
{
    public CustomMappingProfile()
    {
        // 忽略未派生的属性
        CreateMap()
            .ForAllMembers(opt => opt.Ignore());

        // 限定映射配置
        CreateMap()
            .ForMember(dest => dest.Property1, opt => opt.MapFrom(src => src.Property1))
            .ForMember(dest => dest.Property2, opt => opt.MapFrom(src => src.Property2));
    }
}

然后,在应用程序启动时,需要将自定义的映射配置添加到AutoMapper中:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 添加AutoMapper
        services.AddAutoMapper(typeof(Startup));

        // 添加自定义映射配置
        var mapperConfig = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile();
        });
        IMapper mapper = mapperConfig.CreateMapper();
        services.AddSingleton(mapper);
    }
}

最后,在需要进行映射的地方,可以使用注入的IMapper对象来进行映射:

public class MyService
{
    private readonly IMapper _mapper;

    public MyService(IMapper mapper)
    {
        _mapper = mapper;
    }

    public void MapObjects()
    {
        var source = new SourceClass
        {
            Property1 = "Value1",
            Property2 = "Value2",
            // 未派生的属性
            Property3 = "Value3"
        };

        var destination = _mapper.Map(source);

        // 输出映射结果
        Console.WriteLine(destination.Property1); // Value1
        Console.WriteLine(destination.Property2); // Value2
        Console.WriteLine(destination.Property3); // null
    }
}

在上面的示例中,我们创建了一个自定义的映射配置类CustomMappingProfile,并在其中定义了两个映射配置。第一个配置使用ForAllMembers方法将所有属性都忽略了,因此未派生的属性不会被映射。第二个配置使用ForMember方法来限定只映射指定的属性,因此未完全限定的属性也不会被映射。

然后,在应用程序启动时,我们通过AddProfile方法将自定义的映射配置添加到AutoMapper中。

最后,在需要进行映射的地方,我们通过注入的IMapper对象调用Map方法来进行映射,未派生或未完全限定的属性会被忽略。

相关内容

热门资讯

现就发布提示!hhpoker破... 现就发布提示!hhpoker破解工具,wepokerh5破解,手册教程(有挂分享)-哔哩哔哩1、用户...
为切实保障!德普之星的辅助工具... 为切实保障!德普之星的辅助工具介绍(透视)其实确实有挂(讲解有挂开挂辅助安装)-哔哩哔哩1、每一步都...
今天上午!wejoker手机版... 今天上午!wejoker手机版透视脚本,newpoker怎么安装脚本,讲义教程(真是有挂)-哔哩哔哩...
据统计!hhpoker可以开挂... 据统计!hhpoker可以开挂吗(透视)一直真的有挂(有挂详细开挂辅助辅助器)-哔哩哔哩1、上手简单...
刚刚!约局吧德州真的存在透视吗... 刚刚!约局吧德州真的存在透视吗,pokemmo辅助工具,教材教程(今日头条)-哔哩哔哩1、约局吧德州...
据报道!哈糖大菠萝免费辅助器(... 据报道!哈糖大菠萝免费辅助器(透视)原来真的是有挂(有挂教学开挂辅助插件)-哔哩哔哩1、哈糖大菠萝免...
近日!wpk透视辅助下载,we... 近日!wpk透视辅助下载,wepoker透视脚本苹果版,机巧教程(真的有挂)-哔哩哔哩进入游戏-大厅...
来临!竞技联盟辅助(透视)原来... 来临!竞技联盟辅助(透视)原来真的是有挂(确实有挂开挂辅助平台)-哔哩哔哩1)竞技联盟辅助辅助挂:进...
据公告内容!pokemmo脚本... 据公告内容!pokemmo脚本,拱趴大菠萝有什么挂,技法教程(有挂方略)-哔哩哔哩1、拱趴大菠萝有什...
此事迅速冲上热搜!拱趴大菠萝万... 此事迅速冲上热搜!拱趴大菠萝万能挂(透视)一贯真的有挂(有挂分析开挂辅助插件)-哔哩哔哩1、下载好拱...