当前位置:  开发笔记 > 编程语言 > 正文

使用lambda表达式获取属性名称和类型

如何解决《使用lambda表达式获取属性名称和类型》经验,为你挑选了1个好方法。

我正在尝试编写一个函数,它将使用如下语法提取属性的名称和类型:

private class SomeClass
{
    Public string Col1;
}

PropertyMapper propertyMapper = new PropertyMapper();
propertyMapper.MapProperty(x => x.Col1)

有没有办法将属性传递给函数而不对此语法进行任何重大更改?

我想获取属性名称和属性类型.

所以在下面的例子中我想要检索

Name = "Col1"Type = "System.String"

有人可以帮忙吗?



1> Jacob Carpen..:

这里有一个使用Expressions获取属性或字段名称的示例,以帮助您入门:

public static MemberInfo GetMemberInfo(Expression> expression)
{
    var member = expression.Body as MemberExpression;
    if (member != null)
        return member.Member;

    throw new ArgumentException("Expression is not a member access", "expression");
}

调用代码如下所示:

public class Program
{
    public string Name
    {
        get { return "My Program"; }
    }

    static void Main()
    {
        MemberInfo member = ReflectionUtility.GetMemberInfo((Program p) => p.Name);
        Console.WriteLine(member.Name);
    }
}

但需要注意的是:简单的陈述(Program p) => p.Name实际上涉及相当多的工作(并且可以花费可测量的时间).考虑缓存结果而不是经常调用方法.


永远记住lambda表达式可以转换为委托表达式或表达式树.
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有