如何将此事件展开到可观察序列?

时间:2015-08-30 19:18:28

标签: c# system.reactive observable

我正在尝试为Outlook编写一个加载项,我正在使用的其中一个事件是ItemsEvents_Event.ItemChange - 其处理程序的签名采用Object作为参数(该项目为改变后的):

items.ItemChange += CalendarItems_ItemChange;

private void CalendarItems_ItemChange(object anItem) {...}

如何使用Observable.FromEventObservable.FromEventPattern从此事件“stream”创建可观察序列,而不是像往常一样附加/分离事件?

1 个答案:

答案 0 :(得分:2)

您需要使用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);

类似answer