zoukankan      html  css  js  c++  java
  • C# 实现对象映射Mapster

    下面是简单例子

    1引用Mapster.dll包

    2.初始化,设置映射规则

    3.下面有两个实体  ModelA 、ModelB

     class ModelA{
        public string UserId{get;set;}
        public string Remark{get;set;}
      }
    
     class ModelB{
        public string User_id{get;set;}
        public string Remark_msg{get;set;}
         public string Lab_id{get;set;}
      }
    

    4.初始化 (推荐: 将所有的映射规则写一起,当项目执行时一起进行初始化操作 ,之后直接使用,避免每次映射都需要进行初始化)

    public static void InitMapster()  
            {
            // modelA 映射到 modelB
                TypeAdapterConfig<ModelA, ModelB>
                        .NewConfig()
                        .AddDestinationTransform((string x) => !string.IsNullOrWhiteSpace(x) ? x : " ")  // 空值替换
                        .Map(dest => dest.Lab_id, src => MapContext.Current.Parameters["labId"])  // 获取运行时的labId的值
                        .Map(dest => dest.User_id, src => src.UserId)  // 将UserId的值映射给User_id
                        .Map(dest => dest.Remark_msg, src => src.Remark);  // 将Remark的值映射给Remark_msg
    
    
           TypeAdapterConfig<ModelC, ModelD>
                 ......
    }

    5.使用映射

    // 调用Mapster 将  List<ModelA> modelAs 映射到 List<ModelB> modelBs
      public void test()
      {
        List<modelA> modelAs = ...;  // 获取modelA对象集合
          int labId = 1;  // 获取 labId的值
        // 进行映射
           var modelBs = modelAs.BuildAdapter()
                                .AddParameters("labId", labId)  // 设置值
                                .AdaptToType<List<ModelB>>();  // 将某一实体映射成List<ModelB>
      }
    

      

      

  • 相关阅读:
    Day 39 管道 、数据共享与地址池
    Day 38 Semaphore ,Event ,队列
    Day37 多进程
    Day 36 网络编程-计算机的发展
    Day 35 验证客户端的合法性+socketserver
    Day 34 黏包
    Day 33 Socket编程.
    Day 32 网络编程
    Day 31 面向对象考试题 第四次考试.
    Day 30 面向对象的考试题
  • 原文地址:https://www.cnblogs.com/besos/p/13355069.html
Copyright © 2011-2022 走看看