gpt4 book ai didi

c# - 在 C# 中使用反射创建 Lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:11 26 4
gpt4 key购买 nike

我需要创建以下 Lambda 表达式:

{d=>d.Name.NameEn}

我写了下面的代码:

ParameterExpression parameter = Expression.Parameter(typeof(T), "d");
MemberExpression memberExpression = Expression.Property(parameter, typeof(T).GetProperty("Name"));
LambdaExpression lambda = Expression.Lambda(memberExpression, parameter);

输出:

{d => d.Name}

但我需要这个:

{d=>d.Name.NameEn}

怎么做这个?

更新:

我的类(class):

 public class T
{
public U Name { get; set; }
}
public class U
{
public string NameEn { get; set; }
}

最佳答案

在这种情况下,您需要将表达式包装在另一个 MemberExpression 中,例如:

var outerMemberExpression = Expression.Property(memberExpression, typeof(U).GetProperty("NameEn"));

并将其用于您的 lambda 表达式。毕竟,您确实有两个成员访问表达式:一个用于访问 Name,一个用于访问 NameEn

关于c# - 在 C# 中使用反射创建 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474286/

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