2009-02-27 2 views
25

Я вижу эту линию во многих онлайн примерах использования действий делегата:действия делегата с нулевыми параметрами

public event Action MyEvent; 

Но когда я пытаюсь его в своем собственном коде, я получаю эту ошибку

иСПользоВания общий тип «System.Action» требуется «1» типа аргументы

документация, безусловно, описывает форму действия без какого-либо параметра типа. Что мне не хватает?

+4

Не ответ на вопрос, но вы не должны использовать действие для события. В качестве делегата для событий используйте EventHandler или EventHandler . –

+2

@GregBeech, спасибо за подсказку, но в чем причина не использовать Action здесь? –

+0

@ I.J.Kennedy Этот ответ довольно устрашающий http://stackoverflow.com/a/803320/1608072 – caiosm1005

ответ

22

Убедитесь, что ваше приложение ссылается на System.Core.

Редактировать - также убедитесь, что вы настроили .NET 3.5, поскольку System.Core.dll является частью этой версии.

+0

И есть .NET 3.5 ... –

+0

Спасибо! У меня не было ссылки System.Core. Даже зная ответ, я все еще не мог найти его в документах. –

36

Расширение на Эндрюс ответ.

Совершенно правомерно использовать действие в сценарии, отличном от 3.5. Просто определите это самостоятельно.

public delegate void Action(); 
+0

Если вы не передаете его кому-то библиотеке elses, то есть используете действие System.Core ... –

+3

@Simon, в этом случае вы уже должны использовать 3.5 (прямо или косвенно), поэтому это не проблема. – JaredPar