Некоторые предопределенные методы содержат ParamArray в их подписи. Делегаты, однако, не могут содержать ParamArray в своей подписи.Делегаты и ParamArray - Временные решения?
Вопрос: Предположим, вы хотите создать механизм делегирования для определенного метода, который требует ParamArray. Как бы вы справились с этим ограничением?
РЕДАКТИРОВАТЬ: только чтобы уточнить, предположим, что вы сами не можете изменить сами сигнатуры метода (предопределенные методы, определенные сторонней стороной, будь то 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: Оказывается, что решения по тарелочкам применимы также для создания События и операторы, содержащие параметр ParamArray.
Я нахожу его интригующим, что он отлично работает, если вы не используете сахар для добавления атрибута ... Глупые ограничения компилятора FTL –
Никогда не знал, что этот атрибут существует даже! –
@ Jon Skeet, вы правы, единственная реальная проблема здесь заключалась в том, чтобы сохранить синтаксический сахар, и я добавил эту заметку к самому вопросу. И снова легенда оправдывает свое название. Спасибо, что решили. –