我希望能夠建立類似下面的委託表達式:如何在「sub」表達式中使用lambda表達式參數?
Func<object[], object> createSomeType1 = (args) =>
{
return new SomeType1((P1)args[0], (P2)args[1], (P3)args[2]);
};
我剛開始學習手工製作的表達式,所以原諒我,如果這是一個相當簡單的問題(或者說我誤解東西)。
我知道,創建具有正確類型的構造,我會做到以下幾點:
var p1 = Expression.Parameter(typeof(P1));
var p2 = Expression.Parameter(typeof(P2));
var p3 = Expression.Parameter(typeof(P3));
var someType1Exp = Expression.New(constructorInfo, p1, p2, p3);
然後我知道了「外」拉姆達是,我認爲,聲明如下:
Expression<Func<object[], object>>.Lambda<Func<object[], object>>(
someType1Exp,
Expression.Parameter(typeof(object[])));
我在包裝我的頭時遇到了麻煩,如何從外部表達式將參數「傳遞」到內部表達式,然後將其轉換爲正確的類型。
任何暗示正確的方向表示讚賞。
添加完整的示例使用內部/外部lambd一個;實際上你並不需要這麼做 - 你可以直接在一個lambda中做。 – 2010-11-09 21:09:24