我试图从一个事件创建一个可观察的序列。该事件具有以下签名:
event SensorValueChangedEventHandler SensorValueChanged;
我正在尝试通过以下方式创建Observable:
var eventAsObservable = Observable.FromEvent(
(EventHandler<SensorValueChangedEventArgs> ev) => new SensorValueChangedEventHandler(ev),
ev => CrossDeviceMotion.Current.SensorValueChanged += ev,
ev => CrossDeviceMotion.Current.SensorValueChanged -= ev);
但是,编译器失败并出现以下错误:
Error CS0029: Cannot implicitly convert type `System.Action' to `DeviceMotion.Plugin.Abstractions.SensorValueChangedEventHandler'
我想知道是否有人可以评论如何从此事件中正确创建可观察对象。
最有可能您需要这样做:
var eventAsObservable = Observable.FromEvent<SensorValueChangedEventHandler, SensorValueChangedEventArgs>(
handler => (sender, args) => handler(args),
ev => CrossDeviceMotion.Current.SensorValueChanged += ev,
ev => CrossDeviceMotion.Current.SensorValueChanged -= ev);
在第一个参数中,您告诉如何Action<SensorValueChangedEventArgs>
(基本上OnNext
)和您的委托人之间进行映射。在第二个和第三个参数中,您传递了subscribe和unsubscribe函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句