LambdaExpression类型怎么转换成指定类型的表达式(Expression>)

跳动de指尖 2017-05-31 04:09:25
如题,

//updateContent 是一个Dictionary<string,object> 的类型
foreach (var item in updateContent)
{
var param = Expression.Parameter(typeof(T));
var body = Expression.MakeMemberAccess(param, typeof(T).GetProperty(item.Key));
var lambda = Expression.Lambda(body,param);
//Todo ...

}

这里的LambdaExpression类型的lambda变量想转换成
Expression<Func<T,typeof(T).GetProperty(item.Key).Type>> 这样的类型,不知道有什么办法?
...全文
554 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bloodish 2017-05-31
  • 打赏
  • 举报
回复
引用 3 楼 pengqian098 的回复:
[quote=引用 2 楼 bloodish 的回复:] 上个图,比较能说明问题
谢谢,很有用。 但是,以你的class为例,我最终想获取的类型是 Expression<Func<TestClass,int>> [/quote] 看Watch里funcDelegate的类型,应该就是你想要的结果,做个type cast就可以了 (Expression<Func<TestClass,int>>)funcDelegate
跳动de指尖 2017-05-31
  • 打赏
  • 举报
回复
引用 2 楼 bloodish 的回复:
上个图,比较能说明问题
谢谢,很有用。 但是,以你的class为例,我最终想获取的类型是 Expression<Func<TestClass,int>>
bloodish 2017-05-31
  • 打赏
  • 举报
回复
上个图,比较能说明问题
bloodish 2017-05-31
  • 打赏
  • 举报
回复

foreach (var item in updateContent)
            {
                var param = Expression.Parameter(typeof(T));
                var body = Expression.MakeMemberAccess(param, typeof(T).GetProperty(item.Key));
                //var lambda = Expression.Lambda(body, param);       

                var funcType = typeof(Func<,>).MakeGenericType(typeof(T), typeof(T).GetProperty(item.Key).PropertyType);
                var funcDelegate = Expression.Lambda(funcType, body, param);

            }

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧