我有這個代碼,我試圖通過另一個調用包裝一個匿名函數,所以當它實際上是返回的包裝的值,而不是原始函數的。用另一個調用包裝匿名函數
但是在下面的代碼中,我在上次調用中得到了一個NullPointerException
。我相信我沒有做正確的事情,但是打敗了我。
class Program
{
public class MyClass
{
public int MyProp { get; set; }
}
private static List<Func<MyClass, object>> Calls;
private static object ExtraCall(int obj)
{
var returnVal = 8;
//do some stuff
return returnVal;
}
static void Main(string[] args)
{
Calls = new List<Func<MyClass, object>>();
Calls.Add(c => c.MyProp);
Func<MyClass, object> func = c => c.MyProp;
Calls.Add(c => ExtraCall((int)func(func.Target as MyClass)));
var obj = new MyClass(){ MyProp = 7 };
var test1 = Calls[0](obj);
var test2 = Calls[1](obj);
}
}
你期望'func.Target'是什麼?注意你如何在第二個lambda表達式中的任何地方不使用'c' - 這應該是一個提示。 – 2015-02-05 17:25:51