如何将此事件展开为可观察的序列?
How Can I Unfold This Event to an Observable Sequence?
我正在尝试为 Outlook 编写加载项,我正在使用的事件之一是 ItemsEvents_Event.ItemChange
- 其处理程序的签名采用 Object
作为参数(更改的项目):
items.ItemChange += CalendarItems_ItemChange;
private void CalendarItems_ItemChange(object anItem) {...}
我如何使用 Observable.FromEvent
或 Observable.FromEventPattern
从这个事件 "stream" 而不是像往常一样 attaching/detaching 这个事件创建一个可观察的序列?
您需要使用 FromEvent
转换重载来告诉 Rx 它应该如何解释您的事件:
IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion,
Action<TDelegate> addHandler,
Action<TDelegate> removeHandler);
在你的情况下它看起来像:
var source = Observable.FromEvent<ItemsEvents_ItemEventChangeHandler, object>(
emit => new ItemsEvents_ItemEventChangeHandler((obj) => emit(obj)),
h => items.ItemChange += h,
h => items.ItemChange -= h);
相似
我正在尝试为 Outlook 编写加载项,我正在使用的事件之一是 ItemsEvents_Event.ItemChange
- 其处理程序的签名采用 Object
作为参数(更改的项目):
items.ItemChange += CalendarItems_ItemChange;
private void CalendarItems_ItemChange(object anItem) {...}
我如何使用 Observable.FromEvent
或 Observable.FromEventPattern
从这个事件 "stream" 而不是像往常一样 attaching/detaching 这个事件创建一个可观察的序列?
您需要使用 FromEvent
转换重载来告诉 Rx 它应该如何解释您的事件:
IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>(Func<Action<TEventArgs>, TDelegate> conversion,
Action<TDelegate> addHandler,
Action<TDelegate> removeHandler);
在你的情况下它看起来像:
var source = Observable.FromEvent<ItemsEvents_ItemEventChangeHandler, object>(
emit => new ItemsEvents_ItemEventChangeHandler((obj) => emit(obj)),
h => items.ItemChange += h,
h => items.ItemChange -= h);
相似