2016-08-09 3 views
3

System.Linq.Expressions API를 사용하여 개체 목록에서 DataTable을 만드는 메서드를 만들려고하고 있지만 표현식을 디 컴파일 할 때 얻는 다음 IL을 생성하는 방법을 알 수 없습니다. typeof (int). System.Linq.Expressions API를 사용하여 "typeof (T)"를 에뮬레이트 할 수 있습니까?

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)에 대한 코드를 생성하고 싶습니다.

답변

7

그냥 Expression.Constant를 사용하고 값으로 typeof(int) 전달 : 당신은 람다 표현식 내 typeof 사용할 때, 어쨌든 일이 무엇

var expression = Expression.Constant(typeof(int), typeof(Type)); 

:

Expression<Func<Type>> func =() => typeof(T); 
+0

완벽한을, 내가 찾고 있던 그냥 뭐 . 나는 그저 그렇게 쉬울 수 없다고 생각했다. –

관련 문제