博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Expression.Bind()方法的应用
阅读量:7066 次
发布时间:2019-06-28

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

介绍:

C# 中反射有 3 种方式去实现:Emit,Expression Tree,Activator。那么他们的性能也跟我的书写顺序是一样的,最前面的Emit是最快的,Expression Tree次之,Activator最慢。

下面通过Expression Tree创建一个对象的实例:

public class Person{    public int P_Id { get; set; }    public String P_Name { get; set; }    public String P_Tag { get; set; }}
class Program{    static void Main(string[] args)    {        var p = Expression.Parameter(typeof(String), "name");        var newExp = Expression.New(typeof(Person));        var bindsExp = new[]{            Expression.Bind(typeof(Person).GetProperty("P_Name"),p)        //这个地方还可以写 Person 类的其它属性,本示例只写了一个        };        var body = Expression.MemberInit(newExp, bindsExp);        var func = Expression.Lambda
>(body, new[] { p }).Compile(); var person = func("JRoger"); Console.WriteLine(person.GetType() == typeof(Person)); // True Console.ReadKey(true); }}

其中 func("JRoger") 就是为 P_Name 属性赋值。上面的表达式代码相当于:

name => new Person { P_Name = name }

C# 中的表达式树相对比较难学一点,但是多用、多看、多总结,总会从中慢慢体会出来各个成员的作用及用法。很多地方用表达式树去解决是非常方便的。今天写这个也是因为看Enterprise Library 6.0源代码从中学到的 ReflectionRowMapper<TResult> 类。

转载地址:http://dvxll.baihongyu.com/

你可能感兴趣的文章
oracle视图恢复,第九章 Oracle恢复内部原理(恢复相关的 V$ 视图)
查看>>
oracle数据库匿名块,Oracle PL/SQL匿名块(二)
查看>>
oracle+weblogic漏洞,Oracle WebLogic远程命令执行漏洞预警
查看>>
中标普华linux桌面初始密码,中标普华桌面Linux3.0.1
查看>>
linux 可变 大小 磁盘6,Resize CentOS Linux hard drive partition (centos 6.3 调整LVS磁盘大小)...
查看>>
linux bash命令自动完成,RED HAT LINUX bash 自动补全命令安装
查看>>
linux服务器一直访问183.111.141.109,Linux服务器上11种网络连接状态
查看>>
linux内核编译找不到unistd,无法创建“arch/x86/syscalls/....../unistd_32.h”解决方法
查看>>
nobody nogroup linux vi nfs,nfs挂载后权限映射错误(nobody)的解决办法
查看>>
linux mlock源代码,LINUX系统调用mlock的代码分析-Read.DOC
查看>>
C语言编程求解传热学,中国石油大学计算传热学大作业2.pdf
查看>>
零基础学C语言设计难吗,【经验分享】零基础想学C语言,过来人提醒大家几点...
查看>>
c 语言mode10,C语言程序设计教案cjiboxue10.ppt
查看>>
C语言4个以上条件用if函数,if条件判断语句,谁能帮我分析一下?
查看>>
鸿蒙系统热情下降,2大系统同时官宣,华为、苹果针锋相对,用户态度截然不同...
查看>>
电视android系统怎么重启,电视一直出现android怎么办
查看>>
Android新浪微博分页加载,Android仿新浪微博分页管理界面(3)
查看>>
无线 iphone客户端测试白皮书(三)
查看>>
RAID级别详解,如何在Linux下实现软RAID图文解析。
查看>>
超越虚拟化-融合之道
查看>>