從lambda表達式中檢索屬性名當通過lambda表達式傳入時,是否有更好的方法獲取屬性名稱?這是我目前所擁有的。例如。GetSortingInfo<User>(u => u.UserId);它的工作方式是,只有當屬性是字符串時,才將其轉換為成員表達式。因為不是所有的屬性都是字符串,所以我不得不使用Object,但是它會返回這些字符串的一個unary表達式。public static RouteValueDictionary GetInfo<T>(this HtmlHelper html,
Expression<Func<T, object>> action) where T : class{
var expression = GetMemberInfo(action);
string name = expression.Member.Name;
return GetInfo(html, name);}private static MemberExpression GetMemberInfo(Expression method){
LambdaExpression lambda = method as LambdaExpression;
if (lambda == null)
throw new ArgumentNullException("method");
MemberExpression memberExpr = null;
if (lambda.Body.NodeType == ExpressionType.Convert)
{
memberExpr =
((UnaryExpression)lambda.Body).Operand as MemberExpression;
}
else if (lambda.Body.NodeType == ExpressionType.MemberAccess)
{
memberExpr = lambda.Body as MemberExpression;
}
if (memberExpr == null)
throw new ArgumentException("method");
return memberExpr;}
- 3 回答
- 0 關注
- 855 瀏覽
添加回答
舉報
0/150
提交
取消