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



我正在尝试为Outlook编写一个插件,我使用的事件之一是ItemsEvents_Event.ItemChange -其处理程序的签名将Object作为参数(更改的项目):

items.ItemChange += CalendarItems_ItemChange;
private void CalendarItems_ItemChange(object anItem) {...}

我如何使用Observable.FromEventObservable.FromEventPattern从这个事件"流"创建一个可观察的序列,而不是像往常一样附加/分离事件?

你需要使用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);
类似回答

相关内容

  • 没有找到相关文章

最新更新