一些预定义的方法在其签名中包含一个ParamArray 。但是,代表不能在其签名中包含 ParamArray。
问题:假设您希望为需要 ParamArray 的特定方法创建委托机制。你将如何解决这个限制?
编辑:为了清楚起见,假设您不能更改方法签名本身(预定义的方法,由某些第 3 方定义,无论是否是 Microsoft)。
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:事实证明,Skeet 的解决方案也适用于创建包含 ParamArray 的事件和运算符。