开发者

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

开发者 https://www.devze.com 2023-01-26 10:26 出处:网络 作者: Csharp 小记
目录C#实体类转换方式以下提供两种方式实现功能开发环境实现代码C#实体类转为jsON字符串总结C#实体类转换方式
目录
  • C#实体类转换方式
    • 以下提供两种方式
    • 实现功能
    • 开发环境
    • 实现代码
  • C#实体类转为jsON字符串
    • 总结

      C#实体类转换方式

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

      以下提供两种方式

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

      实现功能

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

      开发环境

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

      实现代码

      //学生类 
      private class Student
      {
        public string name { get; set; }
        public 开发者_C培训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);//张三
      Cpythononsole.WriteLine(teacher.age); //20
      Console.WriteLine(teacher.sex);
      
      
      //泛型+反射
      public static T ConvertModel<T, P>(P pModel)
      {
        T ret = System.Activator.CreateInstance<T>();
      
        List<PropertyIphpnfo> p_pis = pModel.GetType().GetProperties().ToList();
        PropertyInfo[] t_pis = typeof(T).GetPjsroperties();
      
      javascript  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);

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号