利用Lambda获取类中属性名称

 1     public class TypeInfoHelper
 2     {
 3         public static string GetPropertyName<T>(Expression<Func<T, dynamic>> property)
 4         {
 5             var propertyName = string.Empty;
 6             var body = property.Body;
 7             if (body.NodeType == ExpressionType.Convert)
 8             {
 9                 var o = (body as UnaryExpression).Operand;
10                 propertyName = ((o as MemberExpression).Member as PropertyInfo).Name;
11             }
12             else if (body.NodeType == ExpressionType.MemberAccess)
13             {
14                 propertyName = ((body as MemberExpression).Member as PropertyInfo).Name;
15             }
16             return propertyName;
17         }
18     }

先定义个实体用来测试:

1     public class Product
2     {
3         public int Id { get; set; }
4         public string Name { get; set; }
5         public string Description { get; set; }
6     }

使用:

1    var feildName = TypeInfoHelper.GetPropertyName<Product>(s => s.Description);
2    Console.WriteLine(feildName);

时间: 2024-11-03 22:04:41

利用Lambda获取类中属性名称的相关文章

利用runtime实现延展动态改变模型类中属性的set,get方法

昨天大概的阐述了一下关于构架控制容器的概念,但是如果要丰满这个想法还有很多问题,比如如果我想对一些controller进行管理就势必涉及到controller的加载以及缓存,而想做这些的前提就是构建一个controller表.对表中设定的字符串管理,从而管理对应的controller.传统创建表的方法有很多,最为常用的就是plist文件,但是对于iOS开发的程序员来说,如果这个plist写死,在管理的时候就会比较死板,要知道oc是一门灵活的,动态的语言.如果我们使用NSUserDefaults,

java类中属性的加载顺序,以及内存分配情况介绍

看下面例子及说明: /** 假如有外部类调用了该类,代码为:new StaticTest(); 那么下面是类属性的加载顺序 */ public class StaticTest{ public int dsd=2;//第3 //多个对象会有多次分配内存 public awds() { int sdsfsd=2;//第4 //多个对象会有多次分配内存 } //静态代码块 static{ System.out.println("静态代码块正在加载...");//第1 } public st

类中属性返回形式(对象,关联数组,索引数组)

class A { public $x, $y; function __construct($x, $y)  { $this->x = $x; $this->y = $y; } function get_value($arr = true)  { if($arr == 'arr')   { // 类中属性以关联数组形式转换返回 return get_object_vars($this); }else if($arr == 'obj')   { //类中属性以对象形式返回 return $thi

MyBatis系列二 之 数据库列名于程序实体类中字段名称不一致

MyBatis系列二  之   数据库列名于程序实体类中字段名称不一致 情景:当数据库中的列名与我们程序实体类中的字段名称不一致         使用ResultMap节点配置信息  在映射文件中  mapper根节点下配置ResultMap节点信息 <resultMap type="Student" id="studentMapper"> <result column="sname" property="stunam

利用POI获取Excel中图片和图片位置

利用POI获取Excel中图片和图片位置(支持excel2003or2007多sheet) 转自:http://blog.csdn.net/delongcpp/article/details/8833995 第三方JAR包(apache下载POI即可): poi-3.9-20121203.jar dom4j-1.6.1.jar poi-ooxml-3.9-20121203.jar poi-ooxml-schemas-3.9-20121203.jar poi-scratchpad-3.9-2012

反射获取类中的指定字段

** Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible(true)设置访问权限,用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值 @throws Exception */ public static void main(Str

java 利用反射获取类对象中List的值

Field[] fields = Object.getClass().getDeclaredFields();//Object是已经被赋值的对象实例 for (Field field : fields) {if (!field.isAccessible()) { field.setAccessible(true); } if (List.class.isAssignableFrom(field.getType())) { Type t = field.getGenericType(); if (

iOS获取类的属性列表

通过实例讲解: @interface DemoObject : NSObject @property (strong, nonatomic,readonly) NSString *name; @property (strong, nonatomic) NSMutableArray *dataSource; @property (copy, nonatomic) NSDictionary *product; @property (assign, atomic) NSUInteger count;

面向对象中对象和类以及如何访问类中属性和方法

对象:客观存在的具体事物.某一个具体的个体 *类:具有相同行为和共同特征的对象的集合,类是人类脑海中一个抽象的概念,通过类创建对象 *类中的成员:1.成员属性(描述外部特征) 2.成员方法(描述功能行为)* 如何定义一个类: * [修饰符] class 类名{ * //1.属性的定义:与定义变量类似 * [修饰符] 数据类型 属性名; * //2.方法的定义 * [修饰符] 返回值类型 方法名(形参列表){ * //方法体; * } * } * 成员变量和局部变量的区别: * 1.作用域不同:成