Vol*_*kyy 7 .net c# asp.net-mvc
有.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;
}
Run Code Online (Sandbox Code Playgroud)
如果传入的lambda不是MemberExpression,则会抛出异常(尽管您可能需要更具描述性的异常).
如果你想直接调用这个方法GetPropertyName(x => x.ID),你需要知道什么类型x.一种方法是类型参数:
string GetPropertyName<T>(Expression<Func<T, object>> expression)
{
var body = (MemberExpression)expression.Body;
return body.Member.Name;
}
Run Code Online (Sandbox Code Playgroud)
但这意味着您必须明确指定它:
GetPropertyName<Foo>(f => f.Id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3795 次 |
| 最近记录: |