打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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;}

由简入繁,拿来即用

后续精彩,持续关注

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# 最简单的链式调用例子
C#中,Json的序列化和反序列化的几种方式总结
C# 属性(Property) | 菜鸟教程
c# 链式编程
SpringMVC源码总结(十)自定义HandlerMethodArgumentResolver
springMVC复杂页面提交 list
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服