2015-01-21 131 views
2
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 <TSource>到表達式<Func <TSource,TValue >>

我想Func鍵轉換爲表達>

+0

希望這有助於http://stackoverflow.com/questions/767733/converting-a-net-funct-to-a-net-expressionfunct – Amit 2015-01-21 07:17:24

回答

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 } 
    ); 
} 
相關問題