給出下面的變量之一,如何'檢查'它們以獲取傳入的參數值?即12345在lambda /表達式樹內尋找
System.Func<DateTime> f1 =() => DateTime.Now.AddDays(12345);
System.Linq.Expressions.Expression<System.Func<DateTime>>
f2 =() => DateTime.Now.AddDays(12345);
編輯:
下面的兩個答案通過的Mikael和柯克都回答我的問題,一部開拓創新。 但是,現在我已經使這個更復雜一點來處理「現實生活」了。 理想我正在尋找一個「一般」的解決方案,這將有一些工作alongs的下面幾行:
var days = 123;
var hours = 456;
System.Func<DateTime> f1 =() => DateTime.Now.AddDays(days).AddHours(hours);
Expression<System.Func<DateTime>> f2 =() => DateTime.Now.AddDays(days).AddHours(hours);
我真正追求的是產生unikey辦法「鑰匙」給予了lamda表達。 我的想法是使用方法名稱和參數名稱/值對,但我歡迎其他建議!謝謝。
'f1'確實包含的信息,但只有通過檢查從C#編譯器生成的IL。如果執行了'f2',則在運行時編譯並且C#編譯器只創建一個表達式樹,您可以使用'Expression'類型和子類型來檢查。 – Richard 2010-08-24 15:40:53