2009-02-27 4 views
25

Je vois cette ligne dans de nombreux exemples en ligne d'utiliser le délégué d'action:délégué d'action avec des paramètres zéro

public event Action MyEvent; 

Mais quand je l'essayer dans mon code, je reçois cette erreur

aide le type générique 'System.Action' exige type '1' arguments

la documentation décrit certainement un formulaire d'Action sans aucun paramètre de type. Qu'est-ce que je rate?

+4

Pas une réponse à la question, mais vous ne devez pas utiliser une action pour un événement. Utilisez EventHandler ou EventHandler en tant que délégué pour les événements. –

+2

@GregBeech, merci pour le conseil, mais quelle est la raison de ne pas utiliser l'action ici? –

+0

@ I.J.Kennedy Cette réponse est assez génial http://stackoverflow.com/a/803320/1608072 – caiosm1005

Répondre

22

Assurez-vous que votre application fait référence à System.Core.

Modifier - Assurez-vous également que vous ciblez .NET 3.5 comme System.Core.dll fait partie de cette version.

+0

Et est .NET 3.5 ... –

+0

Merci! Je n'avais pas de référence System.Core. Même connaissant la réponse, je ne pouvais toujours pas le trouver dans les docs. –

36

Expansion de la réponse d'Andrews.

Il est parfaitement légal d'utiliser Action dans un scénario non-3.5. Définissez-le simplement vous-même.

public delegate void Action(); 
+0

Sauf si vous le transmettez à une autre bibliothèque, utilisez l'action System.Core ... –

+3

@Simon, dans ce cas, vous devez déjà utiliser 3.5 (directement ou indirectement), donc ce n'est pas un problème. – JaredPar

Questions connexes