首页 新闻 搜索 专区 学院

表达式树中如何调用静态扩展方法

0
悬赏园豆:50 [已解决问题] 解决于 2015-10-08 21:52
ParameterExpression left = Expression.Parameter(itemType, "s");
var des = typeof(TypeExtension).GetMethod("GetDescription"); //静态扩展方法: public static string GetDescription(this Enum value) 获取枚举的描述信息
Expression pro = Expression.Property(left, itemType.GetProperty("FileType")); //属性
//var pro1 = Expression.MakeMemberAccess(left, itemType.GetProperty("FileType"));
var descall = Expression.Call(des, pro); //调用静态方法
Expression right = Expression.Call(descall, typeof(string).GetMethod("Contains", new Type[] { typeof(string) }), Expression.Constant("")); //模糊查询


本段代码的需求是对集合中的枚举(描述值,通过静态方法获取)进行模糊查询,次行代码(Expression.Call(des, pro); //调用静态方法)出错:

System.ArgumentException : 类型为“XLY.SF.Domain.EnumFileItemType”的表达式不能用于方法“System.String GetDescription(System.Enum)”的类型为“System.Enum”的参数,求help!!!

安木夕的主页 安木夕 | 初学一级 | 园豆:166
提问于:2015-10-08 16:22
< >
分享
最佳答案
1

已解决

安木夕 | 初学一级 |园豆:166 | 2015-10-08 18:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册