나는 실시간으로 만 알 수있는 유형의 람다 표현식 (사용자 입력을 기반으로하지만 순간적으로 개념 증명을위한 더미 값 사용)을 동적으로 생성합니다. 따라서 런타임 (TResult
은 항상 bool
이 될 때까지)을 알지 못하기 때문에 Func<T,TResult>
부분을 T
부분을 동적 유형으로 전달해야합니다.람다 <Func<>에 매개 변수로 동적으로 결정된 유형을 사용하는 방법>?
Type
변수를 전달하거나 typeof
을 제네릭과 함께 사용할 수없는 것 같습니다. 기본적으로 나는 이런 식으로 뭔가를 할 노력하고있어 :
// (f => f.Baz == 1)
Type theType = Type.GetType("Foo");
ParameterExpression pe = Expression.Parameter(theType, "f");
Expression left = Expression.Property(pe, theType.GetProperty("Baz"));
Expression right = Expression.Constant(1);
Expression expr = Expression.Equal(left, right);
// This works fine but uses a hard-coded type, which I won't know until runtime:
// var lambda = Expression.Lambda<Func<Foo,bool>>(expr, new ParameterExpression[] { pe }).Compile();
var lambda = Expression.Lambda<Func<theType, bool>>(expr, new ParameterExpression[] { pe }).Compile();
그러나, 나는 Func을의 T
부분으로 변수 theType
을 사용할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?