博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#对象深表复制方法
阅读量:7052 次
发布时间:2019-06-28

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

//反射        public static TOut TransReflection
(TIn tIn) { TOut tOut = Activator.CreateInstance
(); var tInType = tIn.GetType(); foreach (var itemOut in tOut.GetType().GetProperties()) { var itemIn = tInType.GetProperty(itemOut.Name); ; if (itemIn != null) { itemOut.SetValue(tOut, itemIn.GetValue(tIn,null),null); } } return tOut; } //序列化 public static TOut TransJsonConvert
(TIn tIn) { return JsonConvert.DeserializeObject
(JsonConvert.SerializeObject(tIn)); }
using System.Linq.Expressions; ///     /// 表达式树实现的深表复制    ///     /// 
///
public static class TransExp
{ private static readonly Func
cache = GetFunc(); private static Func
GetFunc() { ParameterExpression parameterExpression = Expression.Parameter(typeof(TIn), "p"); List
memberBindingList = new List
(); foreach (var item in typeof(TOut).GetProperties()) { if (!item.CanWrite) continue; MemberExpression property = Expression.Property(parameterExpression, typeof(TIn).GetProperty(item.Name)); MemberBinding memberBinding = Expression.Bind(item, property); memberBindingList.Add(memberBinding); } MemberInitExpression memberInitExpression = Expression.MemberInit(Expression.New(typeof(TOut)), memberBindingList.ToArray()); Expression
> lambda = Expression.Lambda
>(memberInitExpression, new ParameterExpression[] { parameterExpression }); return lambda.Compile(); } public static TOut Trans(TIn tIn) { return cache(tIn); } }

 

转载于:https://www.cnblogs.com/taofengfeng/p/11095467.html

你可能感兴趣的文章
在没联网环境下,启动tomcat出错
查看>>
关于Git bash-127.0.0.7:8888拒绝访问的小问题--环境变量
查看>>
Java EE(七)
查看>>
javascript变量声明提升(hoisting)
查看>>
有价值的数据
查看>>
LayUi超级好用的前端工具
查看>>
[Ubuntu] ubuntu的tty下挂载移动硬盘拷贝数据
查看>>
PowerBI分析个人Exchange邮箱数据
查看>>
犯了个低级错误
查看>>
Win7部署基础知识(7):使用Imagex捕获和安装映像
查看>>
Outlook Anywhere 客户端配置详解
查看>>
优化系列 | MySQL 5.6.10 vs Percona 5.6.6之TPCCC性能测试
查看>>
Windows 9操作系统已经开始测试!
查看>>
Mysql 复制原理以及配置 简要分析
查看>>
无妄之灾
查看>>
从光网城市战略发展看四家运营商的长短及发展
查看>>
Java中如何实现单例模式
查看>>
RHEL6基础四十四之RHEL文件共享③Samba实例
查看>>
使用UDEV创建设备别名
查看>>
mysql字符集乱码案例
查看>>