void ITest<TSource, TDestination>.TestMethod<TValue>(Expression<Func<TDestination, TValue>> destination, Func<TValue> value)
{
// i want to create Func<TValue> to Expression<Func<TSource, TValue>>
}
我正在使用参数Func。
我想将Func转换为Expression&gt;
答案 0 :(得分:0)
您无法将Func<>
“转换”为Expression<Func<>>
。 Func基本上是编译表达式,所以只有解决方案是反编译它,但它不容易实现。
你可以做的是用Func<>
包裹Expression
,但我不确定它是否会给你任何东西。
示例:
public static Expression<Func<T>> Wrap<T>(Func<T> f)
{
return Expression.Lambda<Func<T>>(
Expression.Invoke(Expression.Constant(f))
);
}
public static Expression<Func<T1, T2>> Wrap<T1, T2>(Func<T1, T2> f)
{
var p1 = Expression.Parameter(typeof (T1));
return Expression.Lambda<Func<T1, T2>>(
Expression.Invoke(Expression.Constant(f), p1),
new[] { p1 }
);
}