Другие ответили на ваш оригинальный вопрос. Я просто собираюсь добавить несколько моментов, которые вы должны рассмотреть.
Инициализатор событий
Прежде всего, вы можете использовать `делегат {} ´ как инициализатор для всех событий, чтобы иметь возможность пропустить нулевую проверку, а также чтобы сделать ваши события безопасными.
Пример:
public class MyClass
{
public event EventHandler<TempActionArgs> TempAction = delegate {};
}
Таким образом, вы можете вызвать его, просто используя
TempAction(this, new TempActionArgs(someStrings);
Никаких проверок не требуется.
Использование стандартного механизма событий
Не используйте Action<>
для событий. Используйте стандартный механизм EventHandler
/ EventArgs
, чтобы приложение выглядело как любое другое приложение .NET. imho Action<>
следует использовать только для временного вызова (а не во время жизни объектов). Методы LINQ являются прекрасным примером.