返回嵌套的通用Expression< Func< T,bool>. [英] Returning a nested generic Expression<Func<T, bool>>

查看:70
本文介绍了返回嵌套的通用Expression< Func< T,bool>.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

错误消息是找不到类型或名称空间名称'T'."

The error message is "The type or namespace name 'T' could not be found."

???

public static Expression<Func<T, bool>> MakeFilter(string prop, object val)
{
    ParameterExpression pe = Expression.Parameter(typeof(T), "p");
    PropertyInfo pi = typeof(T).GetProperty(prop);
    MemberExpression me = Expression.MakeMemberAccess(pe, pi);
    ConstantExpression ce = Expression.Constant(val);
    BinaryExpression be = Expression.Equal(me, ce);
    return Expression.Lambda<Func<T, bool>>(be, pe);
}

相关链接:

使用反射来寻址Linqed属性

>: //social.msdn.microsoft.com/forums/zh-CN/linqprojectgeneral/thread/df9dba6e-4615-478d-9d8a-9fd80c941ea2/

在运行时创建通用Func< T>

推荐答案

您需要使方法本身具有通用性:

You need to make the method itself generic:

public static Expression<Func<T, bool>> MakeFilter<T>(string prop, object val)
                                                  -+-
                                                   ^
                                                   +- this

这篇关于返回嵌套的通用Expression&lt; Func&lt; T,bool&gt;.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆