当前位置 : 主页 > 网络编程 > c#编程 >

C#实体类转换的两种方式小结

来源:互联网 收集:自由互联 发布时间:2023-03-22
目录 C#实体类转换方式 以下提供两种方式 实现功能 开发环境 实现代码 C#实体类转为JSON字符串 总结 C#实体类转换方式 将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)
目录
  • C#实体类转换方式
    • 以下提供两种方式
    • 实现功能
    • 开发环境
    • 实现代码
  • C#实体类转为JSON字符串
    • 总结

      C#实体类转换方式

      将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。

      以下提供两种方式

      • 一种是序列化
      • 一种是泛型+反射

      实现功能

      • 两个实体类数据转换赋值

      开发环境

      • 开发工具: Visual Studio 2013
      • .NET Framework版本:4.5

      实现代码

      //学生类   
      private class Student
      {
          public string name { get; set; }
          public int age { get; set; }
          public string className { get; set; }
       
      }
      //教师类
      private class Teacher
      {
          public string name { get; set; }
          public int age { get; set; }
          public string sex { get; set; }
      }
      //给学生类赋值
       Student student = new Student
       {
           name = "张三",
           age = 20,
           className = "六"
       };
       //泛型+反射方式
       Teacher teacher = ConvertModel<Teacher, Student>(student);
       Console.WriteLine(teacher.name);//张三
       Console.WriteLine(teacher.age);//20
       Console.WriteLine(teacher.sex);
       
       //JSON序列化方式
       teacher = null;
       string json = JsonConvert.SerializeObject(student);
       teacher = JsonConvert.DeserializeObject<Teacher>(json);
       Console.WriteLine(teacher.name);//张三
       Console.WriteLine(teacher.age); //20
       Console.WriteLine(teacher.sex);
       
       
       //泛型+反射
      public static T ConvertModel<T, P>(P pModel)
      {
          T ret = System.Activator.CreateInstance<T>();
       
          List<PropertyInfo> p_pis = pModel.GetType().GetProperties().ToList();
          PropertyInfo[] t_pis = typeof(T).GetProperties();
       
          foreach (PropertyInfo pi in t_pis)
          {
              //可写入数据
              if (pi.CanWrite)
              {
                  //忽略大小写
                  var name = p_pis.Find(s => s.Name.ToLower() == pi.Name.ToLower());
                  if (name != null && pi.PropertyType.Name == name.PropertyType.Name)
                  {
                      pi.SetValue(ret, name.GetValue(pModel, null), null);
                  }
       
              }
          }
       
          return ret;
      }

      C#实体类转为JSON字符串

      string jsonstr = JsonConvert.SerializeObject(model);

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

      上一篇:C#dll代码混淆加密的实现
      下一篇:没有了
      网友评论