Alcuni metodi predefiniti contengono uno ParamArray nella loro firma. I delegati, tuttavia, non possono contenere un ParamArray nella loro firma.Delegates and ParamArray - Suggerimenti per soluzioni alternative?
Domanda: Si supponga di voler creare un meccanismo di delega per un metodo specifico che richiede un ParamArray. Come faresti a risolvere questo vincolo?
MODIFICA: per chiarire, si supponga che non sia possibile modificare le firme del metodo (metodi predefiniti, definiti da terze parti, che si tratti di Microsoft o meno).
EDIT2: Il vero problema qui è mantenere lo zucchero sintassi, perché il seguente codice funziona, ma elimina lo zucchero:
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: Si scopre che le soluzioni di Skeet è applicabile anche per la creazione di Eventi e operatori contenenti un ParamArray.
Trovo interessante il fatto che funzioni bene se non si utilizza lo zucchero per aggiungere l'attributo ... limitazioni del compilatore sciocco FTL –
Mai saputo che l'attributo esistesse nemmeno! –
@Jon Skeet, hai ragione, l'unico vero problema qui è stato mantenere lo zucchero della sintassi, e ho aggiunto questa nota alla domanda stessa. Ancora una volta, la leggenda è all'altezza del suo nome. Grazie per aver risolto questo. –