如何使用 System.Linq.Expressions API 模拟 "typeof (T)"?
How can I emulate "typeof (T)" using the System.Linq.Expressions API?
我正在尝试创建一种方法,该方法将使用 System.Linq.Expressions
API 从对象列表中创建 DataTable
,但我不知道如何生成反编译表达式 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)
生成代码。
只需使用Expression.Constant
并传入typeof(int)
作为值:
var expression = Expression.Constant(typeof(int), typeof(Type));
无论如何,这就是在 lambda 表达式中使用 typeof
时发生的情况:
Expression<Func<Type>> func = () => typeof(T);
我正在尝试创建一种方法,该方法将使用 System.Linq.Expressions
API 从对象列表中创建 DataTable
,但我不知道如何生成反编译表达式 typeof (int)
.
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)
生成代码。
只需使用Expression.Constant
并传入typeof(int)
作为值:
var expression = Expression.Constant(typeof(int), typeof(Type));
无论如何,这就是在 lambda 表达式中使用 typeof
时发生的情况:
Expression<Func<Type>> func = () => typeof(T);