利用Lambda获取属性名称
感谢下面这篇博文给我的思路:
http://www.cnblogs.com/daimage/archive/2012/04/10/2440186.html
上面文章的博主给出的代码是可用的,但是调用方法时需要写的代码过于冗长,例如博主给出的示例代码
var name = TypeInfoHelper.GetClassPropertiesName<MyClass,List<string>>(s => myClass.UserName);
代码中的List<string>为MyClass.UserName属性的类型,如果要获取一个类型为int的Flag属性还得相应的改为下面这个样子
var name = TypeInfoHelper.GetClassPropertiesName<MyClass,int>(s => customer.Flag);
我想把其中的传入泛型参数的代码拿掉,变成这样子:
TypeInfoHelper.GetPropertyName(s=>myClass.UserName)
是不是变得非常简洁?下面即是全部代码,再次感谢代码哥,致敬!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var cust = new Customer();
var addr = new Address(cust);
string name1 = TypeInfoHelper.GetPropertyName(p => cust.Flag);
Console.WriteLine(name1);
string name2 = TypeInfoHelper.GetPropertyName(p => addr.Owner.Remark);
Console.WriteLine(name2);
string name3 = TypeInfoHelper.GetPropertyName(p => cust.Orders);
Console.WriteLine(name3);
string name4 = TypeInfoHelper.GetPropertyName(p => cust.Orders.FirstOrDefault().Price);
Console.WriteLine(name4);
Console.ReadLine();
}
} public class TypeInfoHelper
{
public static string GetPropertyName(Expression<Func<Object, Object>> propery)
{
var body = propery.Body.ToString();
return body.Substring(body.LastIndexOf(".") + );
} } public class Customer
{
public string Name { get; set; }
public string Remark { get; set; }
public int Flag { get; set; } public List<string> Contacts { get; set; }
public List<Order> Orders { get; set; }
} public class Order
{
public decimal Price { get; set; }
} public class Address
{
private Customer customer; public string Country { get; set; }
public string State { get; set; }
public string Street { get; set; } public Customer Owner
{
get { return customer; }
} public Address(Customer owner)
{
this.customer = owner;
}
} }
利用Lambda获取属性名称的更多相关文章
- js 获取属性名称,再根据这个属性名获取值
if (result.success) { var obj = JSON.parse(result.data); var sltObj = document.getElementById(" ...
- js 获取属性名称
$(function () { myfun(); }) function myfun() { var ...
- 利用Lambda获取类中属性名称
public class TypeInfoHelper { public static string GetPropertyName<T>(Expression<Func<T, ...
- 利用Java反射根据类的名称获取属性信息和父类的属性信息
代码: import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java ...
- C#通过属性名称获取(读取)属性值的方法
之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...
- 定义通用的可通过lambda表达式树来获取属性信息
我们一般获取某个类型或对象的属性信息均采用以下几种方法: 一.通过类型来获取属性信息 var p= typeof(People).GetProperty("Age");//获取指定 ...
- .NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性
了解C#特性类并声明我们自己的特性类[AttributeTest]代码如下 using System; namespace AttributeTest { /* 特性说明 特性本质是一个继承和使用了系 ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法
函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留 ...
随机推荐
- 【SVN】自动备份SVN仓库
仓库的位置为:C:\xxx\SVNRepo\ MyCommonUtils MyStudyProject SVN仓库备份.bat '参考连接:http://www.uml.org.cn/pzgl/201 ...
- <<精益创业>>读书笔记
不要以严格地职能部门来组成公司,而是要以人们在各自专长的领域做出表现,组建跨部门的团队 在普通的管理中,如果无法实现目标,要么是计划不足,要么是技术不足 这点我感触比较深,以前在老东家的时间,刚开始是 ...
- 用友的凭证update
select pk_glorgbook from bd_glorgbook where glorgbookcode='0100-0001';--0001N510000000006K4X ' and p ...
- winform中DataGrid控件的宽度设置
最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找 ...
- java 线程的让步
//线程的让步 // //线程 class xc1 implements Runnable{ public void run(){ for(int i=1;i<=30;i++){ System. ...
- 让background-color 无效
{ background-color: transparent; // 让背景透明,相当于背景颜色无效 }
- Lambda表达式的演化,委托-匿名方法-Func-Lambda
匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的... 例三: 我们可以写成: 有没有发现我们每次都要定义委托,很多时候签名可能是一样的.这样就没有必要定义重复的. 然后又过了很久很久 ...
- 静态修饰符(关键字static)
1.Static修饰的方法或变量通常称为类方法和类属性 2.静态方法中不能使用this和super关键字,也不能做为局部变量使用 3.在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成 ...
- fw: openstack
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云.小云提供可扩展的.灵活的 ...
- 关于ImageMagick出现无效参数(invalid parameter)的解决方法
Windows 命令行 运行"convert logo.jpg f:\parseWord\tmp\logo.png" 时显示 “无效参数(Invalid Parameter)” ...