gpt4 book ai didi

c# - 通过 MemberExpression 获取属性类型

转载 作者:可可西里 更新时间:2023-11-01 02:59:09 27 4
gpt4 key购买 nike

我问类似的问题here,假设这种类型:

 public class Product {

public string Name { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public bool IsAllowed { get; set; }

}

还有这个使用 MemberExpression 的:

public class HelperClass<T> {

public static void Property<TProp>(Expression<Func<T, TProp>> expression) {

var body = expression.Body as MemberExpression;

if(body == null) throw new ArgumentException("'expression' should be a member expression");

string propName = body.Member.Name;
Type proptype = null;

}

}

我是这样使用的:

HelperClass<Product>.Property(p => p.IsAllowed);

HelperClass 中,我只需要属性名称(在此示例中为 IsAllowed)和属性类型(在此示例中为 Boolean),这样我就可以得到属性名称,但我无法获取属性类型。我在调试中看到属性类型如下图所示:

enter image description here

那么您对获取属性类型有何建议?

最佳答案

尝试将 body.Member 转换为 PropertyInfo

public class HelperClass<T>
{
public static void Property<TProp>(Expression<Func<T, TProp>> expression)
{
var body = expression.Body as MemberExpression;

if (body == null)
{
throw new ArgumentException("'expression' should be a member expression");
}

var propertyInfo = (PropertyInfo)body.Member;

var propertyType = propertyInfo.PropertyType;
var propertyName = propertyInfo.Name;
}
}

关于c# - 通过 MemberExpression 获取属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224119/

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