[stdlib] Как насчет макроса RaiseEvent?
От: catbert  
Дата: 19.10.11 20:21
Оценка: +1
Как известно, правильно вызывать событие надо приблизительно так:
mutable e = MyEvent;
unless (e is null) e(sender, args);


Почему бы не добавить в стандартную библиотеку макрос RaiseEvent, который делал бы за нас грязную работу?

RaiseEvent(evt, sender, args) /* -------> */ { mutable _N_100500 = evt; unless (evt is null) evt(sender, args); }


Кроме того, неплохо добавить и стандартную реализацию OnMyEvent для событий:

[Raise] public event MyEvent : Handler;

/* раскрывается в */

protected OnMyEvent(args : EventArgs) : void
{
    RaiseEvent(MyEvent, this, args);
}


Ну и для полного счастья, аксесоры с событиями:

[EventAccessor] _myField : string;

// создает свойство MyField, событие MyFieldChanged, и метод OnMyFieldChanged
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.