Bazı önceden tanımlı yöntemler imzasında bir ParamArray içerir. Delegeler, imzalarında bir ParamArray içeremez.Delegeler ve ParamArray - Geçici Çözüm Önerileri?
Soru: Bir ParamArray gerektiren belirli bir yöntem için bir temsilci mekanizması oluşturmak istediğinizi varsayalım. Bu kısıtlamayı nasıl halledeceksin?
DÜZENLEME: sadece açıkça belirtmek için, yöntem imzalarını kendileri değiştiremezsiniz (önceden tanımlanmış yöntemler, 3. taraflarca tanımlanmış, Microsoft olsun ya da olmasın).
EDIT2: burada, sözdizimi şeker tutuyor gerçek anlaşma Aşağıdaki kod çalışır, ancak şeker ortadan kaldırır, çünkü:
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: Bu Skeet çözümleri oluşturmak için de uygulanabilir olduğu ortaya çıktı ParamArray içeren Olaylar ve Operatörler.
Öznitelik eklemek için şeker kullanmıyorsanız, gayet iyi çalıştığını merak ediyorum ... saçma derleyici sınırlamaları FTL –
Bu özniteliğin bile var olduğunu asla bilmiyordum! –
@Jon Skeet, haklısınız, burada tek gerçek konu sözdizimi şekerini tutuyordu, ve bu notayı bu soruya ekledim. Bir kez daha, efsane ismine kadar yaşıyor. Bunu çözdüğünüz için teşekkürler. –