我尝试创建一个方法,使用DataTable
API从对象列表中创建System.Linq.Expressions
,但我无法弄清楚如何生成以下内容我在反编译表达式typeof (int)
时得到的IL。
IL_0000: nop
IL_0001: ldtoken System.Int32
IL_0006: call System.Type.GetTypeFromHandle
IL_000B: call LINQPad.Extensions.Dump<Object>
IL_0010: pop
IL_0011: ret
目前我试图通过调用Type.GetType("System.Int")
来解决问题,但我想尽可能为typeof (int)
生成代码。
答案 0 :(得分:7)
只需使用Expression.Constant
并传递typeof(int)
作为值:
var expression = Expression.Constant(typeof(int), typeof(Type));
无论如何,当你在lambda表达式中使用typeof
时会发生什么:
Expression<Func<Type>> func = () => typeof(T);