gpt4 book ai didi

c# - 动态属性选择器 lambda 函数

转载 作者:行者123 更新时间:2023-11-30 13:50:28 26 4
gpt4 key购买 nike

我正在尝试使用给定的类型和属性名称构建属性选择器表达式。即 t => t.PropertyName。

以下代码编译正常,但结果为空值。有人可以指出代码中的错误吗?

    public static Expression<Func<T,object>> CreatePropSelectorExpression(string propName) where T:class,new()
{
var temp = Activator.CreateInstance<T>();
ParameterExpression t = Expression.Parameter(typeof(T),"t");
MemberExpression member = Expression.PropertyOrField(Expression.Constant(temp),propName);
return Expression.Lambda<Func<T,object>>(member,t);
}

提前致谢

最佳答案

您实际上不需要创建对象 T 的实例,您只是创建一些表达式树。这一切都归结为:

Expression<Func<T, object>> CreatePropSelectorExpression<T>(string propertyName)
{
var parameter = Expression.Parameter(typeof(T));
var body = Expression.Convert(Expression.PropertyOrField(parameter, propertyName), typeof(object));
return Expression.Lambda<Func<T, object>>(body, parameter);
}

关于c# - 动态属性选择器 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320561/

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