某些預定義的方法在其簽名中包含ParamArray。然而,代表在其簽名中不能包含ParamArray。代表和ParamArray - 解決方法建議?
問題:假設您希望爲需要ParamArray的特定方法創建委派機制。你將如何解決這個約束?
編輯:只是爲了弄清楚,假設你不能改變方法簽名本身(預定義的方法,由一些第三方定義,無論它是否爲微軟)。
EDIT2:真正的交易在這裏飼養的語法糖,因爲下面的代碼的工作,但消除了糖:
Public Delegate Sub MyDelegate(ByVal myArgs() As Object)
Public Sub PredefinedSub(ByVal ParamArray myArgs() As Object)
'...'
End Sub
Sub Test()
Dim aDelegate As New MyDelegate(AddressOf PredefinedSub)
aDelegate.Invoke(New Object() {1, 2, 3, 4})
End Sub
EDIT3:事實證明,飛碟雙向的解決方案也適用於創建包含ParamArray的事件和操作符。
我覺得它很有趣,如果你不使用糖來添加屬性,它就可以工作......愚蠢的編譯器限制FTL – 2010-04-14 19:12:29
甚至不知道該屬性存在! – 2010-04-14 19:17:40
@Jon Skeet,你說得很對,這裏唯一真正的問題是保持語法糖,並且我已經將這個註釋添加到了問題本身。 再次,傳說不辜負它的名字。謝謝你解決這個問題。 – 2010-04-14 19:20:04