错误消息是“找不到类型或命名空间名称“T”。”
???
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 属性 https://stackoverflow.com/questions/791187/using-reflection-to-address-a-linqed-property
http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/df9dba6e-4615-478d-9d8a-9fd80c941ea2/ http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/df9dba6e-4615-478d-9d8a-9fd80c941ea2/
通用 Func 的运行时创建 https://stackoverflow.com/questions/658316/runtime-creation-of-generic-funct
您需要使方法本身通用:
public static Expression<Func<T, bool>> MakeFilter<T>(string prop, object val)
-+-
^
+- this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)