Comment passez-vous un argument de délégué générique à une méthode dans .NET 2.0

J’ai une classe avec une déclaration de délégué comme suit …

Public Class MyClass Public Delegate Function Getter(Of TResult)() As TResult ''#the following code works. Public Shared Sub MyMethod(ByVal g As Getter(Of Boolean)) ''#do stuff End Sub End Class 

Cependant, je ne veux pas taper explicitement le délégué Getter dans l’appel de méthode. Pourquoi ne puis-je pas déclarer le paramètre comme suit …

 ... (ByVal g As Getter(Of TResult)) 

Y a-t-il un moyen de le faire?

Mon objective final était de pouvoir définir un délégué pour les gestionnaires et accesseurs de propriétés dans la classe appelée. Mais ma lecture indique que vous ne pouvez pas faire ça. Je mets donc les méthodes setter et getter dans cette classe, puis je veux que la classe appelante définisse l’argument de délégué, puis l’invoque. Y at-il une meilleure pratique pour ce faire.

Dans l’exemple ci-dessus, je me rends compte que je peux définir la variable déléguée à partir de la classe d’appel … mais j’essaie de créer un singleton avec une encapsulation ssortingcte.

Pour mémoire, je ne peux utiliser aucun des nouveaux types de delegates déclarés dans .net35.

Les réponses en C # sont les bienvenues.

Des pensées?

Seth

Vous devez append un paramètre de type générique à la méthode:

 Public Shared Sub MyMethod(Of TResult) (ByVal g As Getter(Of TResult)) 

En C #, ce serait

 public static void MyMethod(Getter g) { 

Vous pouvez rendre la méthode qui accepte le délégué générique lui-même générique:

 Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult)) 'do stuff End Sub