私は実行時にしか知りませんタイプのラムダ式(ユーザ入力に基づいていますが、現時点では概念の証明にダミー値を使用しています)を動的に作成しています。したがって、私は実行時(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
を使用することはできません。基本的に私はこのような何かをしようとしています。これをどうすれば解決できますか?