利用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);

posted @ 2016-05-03 21:11  ZuQing  阅读(1613)  评论(1编辑  收藏  举报