Здравствуйте, _FRED_, Вы писали:
Q>>Чего я хочу как автор сендера: чтобы уведомление подписчиков о новом событии, ошибке или окончании потока событий выполнялось просто и прозрачно, без приседаний с сохранением временных ссылок, проверками их на null, etc.
_FR>Это делается очень просто:
Обожемой, кодогенерация на T4-шаблонах. Насчёт просто — это ведь шутка, да?
_FR>У каждого (у многих) делегата появляется метод Raise который решает и проблему проверки на null и даже потокобезопастность разруливает.
Q>>Чего я хочу как автор подписчика: чтобы при подписке мне возвращался токен, с помощью которого я могу отписаться в RAII-стиле, без указания своих обработчиков справа от «-=». Вообще замечательно, если с потоком событий я могу работать как с push-коллекцией в привычном LINQ-подходе. Q>>Стандартный синтаксис event'ов этим требованиям не удовлетворяет. Всякие weak event pattern'ы и прочие богомерзкие извращения использовать желания нет.
_FR>Чего в ваших выкладках не хватает — так это ширины взгляда. Как в такой моделе создавать подписчики из дизайнера?
Здравствуйте, Qbit86, Вы писали:
Q>Я просто констатировал факт, что дёргание ивентов — тёмный уголок в C#
В C# нет методов дерганья эвентов, fire в нем не поддерживается ни для вызова ни для реализации. Любой вызов события в шарпе это прямое использование лежащего под событием экземпляра делегата.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
Здравствуйте, Qbit86, Вы писали:
Q>Почему? Есть какие-то подводные грабли?
Подводная труба одна, зато какая — преобразователи есть только для небольшого количества стандартных делегатов. Универсальное решение возможно только с приведениями типов и через рефлекшен.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>