我需要能夠通過任意方法的一些功能myFunction
:如何將任意方法(或委託)作爲參數傳遞給函數?
void myFunction(AnyFunc func) { ... }
應該可以與其他靜態的,例如,公共或私有方法,甚至委託執行它:
myFunction(SomeClass.PublicStaticMethod);
myFunction(SomeObject.PrivateInstanceMethod);
myFunction(delegate(int x) { return 5*x; });
通過的方法可能有任何數量的參數和任何返回類型。還應該可以通過反射來了解myFunction
中的實際參數數量及其類型。 myFunction
定義中的AnyFunc
將如何適應這些要求?可以接受myFunction
的幾個重載版本。
如果它有參數,您希望傳遞給該方法的內容是什麼?這聽起來像你應該將任何方法轉換爲無參數/無效返回(又名'Action'),然後再傳遞給此方法。 – Servy 2013-04-10 16:25:02
'myFunction'將分析該函數的參數,根據某個外部數據庫檢查它們,並用必要的值調用它,否則將失敗,如果沒有找到數據庫中的匹配條目。 – 2013-04-10 16:26:40
這是一個*非常*令人擔憂的設計,其中你基本上把代碼當作數據來對待。你應該考慮重新設計這樣的代碼是靜態的。 – Servy 2013-04-10 16:27:32