gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:03:22 25 4
gpt4 key购买 nike

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

private class SomeClass
{
Public string Col1;
}

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

有没有什么方法可以在不对语法进行任何重大更改的情况下将属性传递给函数?

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

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

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

有人能帮忙吗?

最佳答案

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

public static MemberInfo GetMemberInfo<T, U>(Expression<Func<T, U>> 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 的简单声明实际上涉及相当多的工作(并且可能花费大量时间)。考虑缓存结果而不是频繁调用方法。

关于c# - 使用 lambda 表达式获取属性名称和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com