Expression Tree
2015-10-22 14:31
134 查看
Expression Tree
Expression Tree 的一个例子Expression Tree 的一个例子
public static class ObjectionExtension { /// <summary> /// 获取属性的名称 /// </summary> /// <typeparam name="T">泛型</typeparam> /// <typeparam name="TProperty">属性</typeparam> /// <param name="t">对象</param> /// <param name="expression">属性</param> /// <returns>属性的名称</returns> public static string GetPropertyName<T, TProperty>(this T t, Expression<Func<T, TProperty>> expression) { var memberExpression = expression.Body as MemberExpression; if (memberExpression != null) { return memberExpression.Member.Name; } var paramExpression = expression.Body as ParameterExpression; if (paramExpression != null) { return paramExpression.Name; } return string.Empty; } /// <summary> /// 根据属性名获取属性值 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象</param> /// <param name="name">属性名</param> /// <returns>属性的值</returns> public static TProperty GetPropertyValue<T, TProperty>(this T t, Expression<Func<T, TProperty>> expression) { var func = expression.Compile(); var result = func(t); return result; } /// <summary> /// 根据属性名称设置属性的值 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="t">对象</param> /// <param name="name">属性名</param> /// <param name="value">属性的值</param> public static void SetPropertyValue<T>(this T t, Action<T> action) { action(t); } public static T As<T>(this object obj) { return default(T); } }
相关文章推荐
- Devexpress中ASPxTreeView绑定数据,显示三级菜单的写法(用存储过程调取)
- linux ln 建立软连接
- 【poj1655】Balancing Act 求树的重心
- ViewController 的loadView、viewDidLoad、viewDidUnload分别是什么时候调用的,在自定义ViewCointroller时在这几个函数中应该做什么工作?
- apache的作用和tomcat的区别
- 检查身份证工具
- Java学习纲目
- Objective-C Runtime 运行时之二:成员变量与属性
- 如何查看电脑支持最大内存
- Linux学习17_每天一个linux命令(5):rm 命令
- CSS之position用法测试归纳
- tcp断开的4次挥手
- Linux安装卸载Mysql数据库
- 自定义checkbox 样式
- 超详细解说Hadoop伪分布式搭建
- Hadoop 文件命令
- nginx优化
- iOS 基础:证书介绍
- Storm学习
- 判断所给二叉树是否是红黑树