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>
  }

  

  

原文地址:https://www.cnblogs.com/besos/p/13355069.html