博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
相同属性类之间的转换
阅读量:5050 次
发布时间:2019-06-12

本文共 1091 字,大约阅读时间需要 3 分钟。

web开发常会遇到model转换的问题

比如一个Person类

数据库的表示 是Person

展现层是PersonViewModel

作为传参是PersonRequest

说道这里大家应该想到AutoMappler了。

当然自己也可以简单的实现,只要通过反射加上泛型就可以简单实现了

代码如下:

public static TTarget ConvertModel
(TSource source) where TTarget : class { if (source == null) { return null; } TTarget obj = Activator.CreateInstance(typeof(TTarget)) as TTarget;//创建目标对象的实例 var sourceProperties = typeof(TSource).GetProperties(); foreach (var item in typeof(TTarget).GetProperties()) { if (!item.CanWrite) { continue; } var sourceProp = sourceProperties.FirstOrDefault(o => o.Name == item.Name);//用linq代理for循环 //如果没有该属性继续 if (sourceProp == null || !sourceProp.CanRead || sourceProp.PropertyType != item.PropertyType) { continue; } item.SetValue(obj, sourceProp.GetValue(source));//将源的值赋给目标 } return obj; }

 

转载于:https://www.cnblogs.com/MarkSun3/p/9481282.html

你可能感兴趣的文章
Oracle学习之简单查询
查看>>
log4j配置
查看>>
linux 配置SAN存储-IPSAN
查看>>
双链表
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
BZOJ4669抢夺(费用流+二分答案)
查看>>
bzoj1606
查看>>
jdk从1.8降到jdk1.7失败
查看>>
一些关于IO流的问题
查看>>
mongo备份操作
查看>>
8 -- 深入使用Spring -- 3...1 Resource实现类InputStreamResource、ByteArrayResource
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
.net 写文件上传下载webservice
查看>>