(资料图片)
将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝)。
//学生类 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(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 (json); Console.WriteLine(teacher.name);//张三 Console.WriteLine(teacher.age); //20 Console.WriteLine(teacher.sex); //泛型+反射 public static T ConvertModel (P pModel) { T ret = System.Activator.CreateInstance (); List 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; }
string jsonstr = JsonConvert.SerializeObject(model);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
X 关闭
Copyright © 2015-2022 西方变频网版权所有 备案号:沪ICP备2020036824号-7 联系邮箱:5 626 629 @qq.com