当前位置: 移动技术网 > IT编程>开发语言>.net > C# 快速高效率复制对象另一种方式 表达式树

C# 快速高效率复制对象另一种方式 表达式树

2019年05月11日  | 移动技术网IT编程  | 我要评论

秘密森林15,everytime歌词,梦断t台

 

作者: 
出处: 

原文地址:https://www.cnblogs.com/emrys5/p/expression_trans_model.html

在 的文章中 3.4 利用泛型的特性再次优化代码,中的代码,做了一下优化,以下为代码红色部分为修改内容

public class transexpressionconvert<tin, tout>

{
private static readonly func<tin, tout> transfunc = getfunc();

private static func<tin, tout> getfunc()
{
var tintype = typeof(tin);
var touttype = typeof(tout);

parameterexpression parameterexpression = expression.parameter(tintype, "param");
list<memberbinding> memberbindinglist = new list<memberbinding>();
foreach (var item in touttype.getproperties())
{
if (!item.canwrite)
continue;
var propertyinfo = tintype.getproperty(item.name);
if (propertyinfo == null || propertyinfo.propertytype != item.propertytype)
continue;
memberexpression property = expression.property(parameterexpression, propertyinfo);
memberbinding memberbinding = expression.bind(item, property);
memberbindinglist.add(memberbinding);
}

memberinitexpression memberinitexpression =
expression.memberinit(expression.new(touttype), memberbindinglist.toarray());
expression<func<tin, tout>> lambda =
expression.lambda<func<tin, tout>>(memberinitexpression, parameterexpression);

return lambda.compile();
}

public static tout trans(tin tin)
{
return transfunc(tin);
}
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网