gpt4 book ai didi

c# - ExpressionHelper.GetExpressionText(LambdaExpression) 替代

转载 作者:太空狗 更新时间:2023-10-29 20:17:59 24 4
gpt4 key购买 nike

是否有 .NET Framework 替代 ExpressionHelper.GetExpressionText(LambdaExpression)?我在一些无法引用 System.Web.Mvc 的项目中需要它。

我知道其中一种可能性是编写我自己的 GetExpressionText(LambdaExpression) 方法实现,但我不想这样做。我的目标是重用现有的 .NET Framework 代码。

最佳答案

自己实现该方法非常简单:

string GetPropertyName(LambdaExpression expression)
{
var body = (MemberExpression)expression.Body;
return body.Member.Name;
}

如果传入的 lambda 不是 MemberExpression,它将抛出一个异常(尽管您可能想要一个更具描述性的异常)。

如果您想像 GetPropertyName(x => x.ID) 那样直接调用该方法,您需要以某种方式知道 x 是什么类型。一种方法是类型参数:

string GetPropertyName<T>(Expression<Func<T, object>> expression)
{
var body = (MemberExpression)expression.Body;
return body.Member.Name;
}

但这意味着您必须明确指定它:

GetPropertyName<Foo>(f => f.Id)

关于c# - ExpressionHelper.GetExpressionText(LambdaExpression) 替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079218/

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