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

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.FromEventObservable.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);

相似