Re[7]: Аргументы у делегатов типов для событий
От: Qbit86 Кипр
Дата: 11.11.10 11:52
Оценка: :)
Здравствуйте, _FRED_, Вы писали:

Q>>Чего я хочу как автор сендера: чтобы уведомление подписчиков о новом событии, ошибке или окончании потока событий выполнялось просто и прозрачно, без приседаний с сохранением временных ссылок, проверками их на null, etc.


_FR>Это делается очень просто:


Обожемой, кодогенерация на T4-шаблонах. Насчёт просто — это ведь шутка, да?

_FR>У каждого (у многих) делегата появляется метод Raise который решает и проблему проверки на null и даже потокобезопастность разруливает.


Q>>Чего я хочу как автор подписчика: чтобы при подписке мне возвращался токен, с помощью которого я могу отписаться в RAII-стиле, без указания своих обработчиков справа от «-=». Вообще замечательно, если с потоком событий я могу работать как с push-коллекцией в привычном LINQ-подходе.

Q>>Стандартный синтаксис event'ов этим требованиям не удовлетворяет. Всякие weak event pattern'ы и прочие богомерзкие извращения использовать желания нет.

_FR>Чего в ваших выкладках не хватает — так это ширины взгляда. Как в такой моделе создавать подписчики из дизайнера?


Это вопрос к разработчикам дизайнера.
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: Аргументы у делегатов типов для событий
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.11.10 16:12
Оценка:
Здравствуйте, Sinix, Вы писали:

S>RX и эвенты решают слегка разные задачи


IObservable — одну и ту же.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[10]: Observer
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.11.10 16:12
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Эвенты — для непосредственного реагирования на события аля

S>
S>      Console.CancelKeyPress += (sender, e) => e.Cancel = false;
S>

S>Для подобных задач RX будет оверкиллом.

Можешь написать свою реализацию IObservable/IObserver и обойтись без RX.

S>Во вторых, RX и эвенты превосходно уживаются вместе.


Скорее преотвратно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[6]: Аргументы у делегатов типов для событий
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.11.10 16:12
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Я просто констатировал факт, что дёргание ивентов — тёмный уголок в C#


В C# нет методов дерганья эвентов, fire в нем не поддерживается ни для вызова ни для реализации. Любой вызов события в шарпе это прямое использование лежащего под событием экземпляра делегата.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[7]: Аргументы у делегатов типов для событий
От: Qbit86 Кипр
Дата: 14.11.10 16:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Q>>Я просто констатировал факт, что дёргание ивентов — тёмный уголок в C#

AVK>В C# нет методов дерганья эвентов,

Методов нет, а дёргать, тем не менее, надо. И способ это делать — тёмный уголок.

AVK>fire в нем не поддерживается ни для вызова ни для реализации


Кстати, «FDG» вроде рекомендуют не использовать термин «fire» для обозначения дёрганья ивентов. Емнип, рекомендуемой альтернативой является «raise».
Глаза у меня добрые, но рубашка — смирительная!
Re[11]: Observable via events
От: Qbit86 Кипр
Дата: 17.11.10 14:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>Во вторых, RX и эвенты превосходно уживаются вместе.

AVK>Скорее преотвратно.

Почему? Есть какие-то подводные грабли?
Глаза у меня добрые, но рубашка — смирительная!
Re[12]: Observable via events
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.11.10 14:22
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Почему? Есть какие-то подводные грабли?


Подводная труба одна, зато какая — преобразователи есть только для небольшого количества стандартных делегатов. Универсальное решение возможно только с приведениями типов и через рефлекшен.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.