Что синтаксис должен объявить событие в C#?

В моем классе я хочу объявить событие, на которое могут подписаться другие классы. Что корректный путь состоит в том, чтобы объявить событие?

Это не работает:

public event CollectMapsReportingComplete;
24
задан Tilendor 17 March 2010 в 18:21
поделиться

5 ответов

Вы забыли упомянуть тип . Для действительно простых событий может быть достаточно EventHandler :

public event EventHandler CollectMapsReportingComplete;

Иногда вам может потребоваться объявить собственный тип делегата, который будет использоваться для ваших событий, что позволит вам использовать настраиваемый тип для EventArgs (см. Комментарий Адама Робинсона):

public delegate void CollectEventHandler(object source, MapEventArgs args);

public class MapEventArgs : EventArgs
{
    public IEnumerable<Map> Maps { get; set; }
}

Вы также можете использовать общий тип EventHandler вместо объявления ваших собственных типов:

public event EventHandler<MapEventArgs> CollectMapsReportingComplete;
34
ответ дан 28 November 2019 в 23:23
поделиться

Вам необходимо указать тип делегата для события:

public event Action CollectMapsReportingComplete;

Здесь я использовал System.Action , но вы можете использовать любой тип делегата по вашему желанию (даже пользовательский делегат). Экземпляр указанного вами типа делегата будет использоваться в качестве резервного поля для события.

7
ответ дан 28 November 2019 в 23:23
поделиться
public event EventHandler MyEvent;
2
ответ дан 28 November 2019 в 23:23
поделиться

Пример

/// </summary>
/// Event triggered when a search is entered in any <see cref="SearchPanel"/>
/// </summary>
public event EventHandler<string> SearchEntered
{
    add { searchevent += value; }
    remove { searchevent -= value; }
}
private event EventHandler<string> searchevent;
3
ответ дан 28 November 2019 в 23:23
поделиться

публичное событие [DelegateType] [EventName];

0
ответ дан 28 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: