2010-12-01 113 views
1

假設我想要一個方法將對象的BeginInvoke方法作爲參數傳遞。我會怎麼做?該調用如下所示:將BeginInvoke作爲參數傳遞

MyRandomMethod(SomeControl.BeginInvoke); 

MyRandomMethod的方法定義是什麼?

問題的一部分是BeginInvoke有重載,所以編譯器會對我嘗試傳遞的參數感到困惑。也許我需要找到一種方法來說明我指的是哪個版本的BeginInvoke? (雖然我會想象這將取決於參數類型)

+0

這是一個代碼氣味,但我看不到代碼。拉姆達可以解決您的問題。 – 2010-12-01 22:48:20

回答

3

MyRandomMethod將必須具有代表與參數SomeControl.BeginInvoke重載其中一個重載的參數。例如:

public void MyRandomMethod(Func<Delegate, IAsyncResult> foo) 

public void MyRandomMethod(Func<Delegate, object[], IAsyncResult> foo) 

(但請不要超載MyRandomMethod本身與這兩個簽名,否則你只是在尋求混淆)

+0

喬恩有權利 - 投票刪除我的 – n8wrl 2010-12-01 21:37:50