栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# .net Mapster 属性对象的映射配置

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# .net Mapster 属性对象的映射配置

最近在项目中要用到mapping,因为在业务逻辑层返回数据给UI层的时候,最好把数据转换成UI层所需要的Dto对象。
之前都是使用automap,最近听说使用Mapster速度比automap更快,所以想尝试尝试。
但是网上关于Mapster的介绍比较少,基本都是很简单的使用,很少有关于属性对象映射的介绍。
比如汽车是一个对象,汽车包含有4个轮子,而轮子有是一个对象,甚至轮子可能还包含其它对象。
从数据库里查询出来的汽车对象是包含有轮子子对象的,所以映射的时候是要把汽车对象及其属性对象(轮子)一起映射出来。
后来找到了一篇接近的文章介绍,是关于自引用对象映射的,也就是父节点包含子节点,
子节点又有可能包含子节点,而父节点与子节点是属于同一个类型的,不过也有参考价值,
连接:https://stackoverflow.com/questions/62324239/how-to-map-self-reference-with-mapster
好了,废话少说,直接动手。
先分别创建3个类,ClassSampleA、ClassSampleB、ClassSampleC:
public class ClassSampleA
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public List ClassSampleBList { get; set; } = new List();
    }

    public class ClassSampleB
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public List ClassSampleCList { get; set; } = new List();
    }

    public class ClassSampleC
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

然后再创建与之对应的Dto:

public class ClassSampleADto
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public List ClassSampleBDtoList { get; set; } = new List();
    }

    public class ClassSampleBDto
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public List ClassSampleCDtoList { get; set; } = new List();
    }

    public class ClassSampleCDto
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

然后创建映射规则配置:

public class MappingConfig
    {
        public static TypeAdapterConfig GetClassSampleADtoWithBAndC()
        {
            TypeAdapterConfig config = new TypeAdapterConfig();
            config.ForType().Map(dto => dto.ClassSampleBDtoList, d => d.ClassSampleBList.Adapt>(GetListClassSampleBDto()));
            return config;
        }
        
        public static TypeAdapterConfig GetListClassSampleBDto()
        {
            TypeAdapterConfig config = new TypeAdapterConfig();
            config.ForType().Map(dto => dto.ClassSampleCDtoList, d => d.ClassSampleCList.Adapt>());
            return config;
        }
    }

调用代码如下:

var classSampleADto = classSampleA.Adapt(MappingConfig.GetClassSampleADtoWithBAndC());

大功告成。
代码:链接:https://pan.baidu.com/s/1fzFmtRt9ltJLDJQ9rJypCg
提取码:1234
复制这段内容后打开百度网盘手机App,操作更方便哦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号