Algunos métodos predefinidos contienen un ParamArray en su firma. Los delegados, sin embargo, no pueden contener un ParamArray en su firma.Delegados y ParamArray: ¿Sugerencias de solución?
Pregunta: Supongamos que desea crear un mecanismo de delegación para un método específico que requiere un ParamArray. ¿Cómo trabajarías en esta restricción?
EDITAR: para dejar en claro, suponga que no puede cambiar las propias firmas de método (métodos predefinidos, definidos por un tercero, ya sea Microsoft o no).
Edit2: El verdadero problema aquí es mantener el azúcar en la sintaxis, debido a que el siguiente código funciona, pero elimina el azúcar:
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: Resulta que las soluciones de Skeet es aplicable también para la creación de Eventos y operadores que contienen un ParamArray.
Me resulta intrigante que funciona bien si no usas el azúcar para agregar el atributo ... tontas limitaciones del compilador FTL –
¡Nunca se supo que ese atributo existía siquiera! –
@Jon Skeet, tienes razón, el único problema real aquí era mantener la sintaxis azucarada, y he agregado esta nota a la pregunta en sí. Una vez más, la leyenda hace honor a su nombre. Gracias por resolver esto. –