ExpressionHelper.GetExpressionText(LambdaExpression) alterna
本文关键字:alterna LambdaExpression GetExpressionText ExpressionHelper | 更新日期: 2023-09-27 18:14:19
是否有。net框架替代ExpressionHelper.GetExpressionText(LambdaExpression)
?我需要它在一些项目,不能引用System.Web.Mvc。
我明白其中一种可能性是编写自己的GetExpressionText(LambdaExpression)
方法实现,但我不想这样做。我的目标是重用已经存在的。net框架代码。
自己实现这个方法很容易:
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)