我試圖想到一個很好的方式調用任何類型的功能。無效或返回值,沒有參數或很多。我需要定時執行此功能,並希望將所有這些從客戶端隱藏起來。所以我只想給客戶端代碼一個方法來使用我的類來調用任何類型的函數,然後我的類將執行它並計時,然後返回到客戶端。C#中的通用方法調用任何函數並返回其返回值(如果有的話)?
部分我無法弄清楚是如何支持任何類型的功能。代表需要一個類型。 func需要回報。我想要一些通用的,使客戶端做最少量的工作來設置參數,最小的工作量來獲得返回值(如果有的話)。
這可能沒有反射?這裏的表現非常重要。
我能想象客戶端代碼看起來像這樣:
Recorder r = new Recorder();
r.Params.Add(param);
r.Params.Add(param);
r.CallFunc([function]);
MyReturnType ret = (MyReturnType)r.returnValue;
也似乎是可行的?
你能給出的例子使用(或期望的使用)?一般來說,人們想用特定數量的參數(可能爲0)調用一個函數/委託,如果有結果,就用它做一些事情。 – 2012-08-08 03:21:20
你如何知道要傳遞什麼參數值?您可能可以使用輕量級代碼生成(又名DynamicMethod)和/或表達式樹來做些什麼。但是你必須對這些參數做些什麼;你必須傳遞一些東西。 – 2012-08-08 03:27:01
對,客戶將不得不做一些工作。他們將不得不用他們的參數來建立呼叫,並且做一些更多的工作以及返回值(如果有的話)。這部分沒有辦法。但建立一個足夠通用的類來處理這是我無法弄清楚的。 – ijjo 2012-08-08 03:28:52