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

Dulcea ·
更新时间:2024-11-13
· 1365 次阅读

目录

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# 实体 实体类

需要 登录 后方可回复, 如果你还没有账号请 注册新账号