FSharp.Control.Reactive icon indicating copy to clipboard operation
FSharp.Control.Reactive copied to clipboard

Observable.fromEventConversion have wrong generic signature

Open shirok1 opened this issue 3 years ago • 0 comments

I'm trying to convert GlobalSystemMediaTransportControlsSession.MediaPropertiesChanged to IObservable. However, it delegates a TypedEventHandler, not EventArgs, so a conversion is needed and ...

let conversion (handler: EventHandler<_>) : Windows.Foundation.TypedEventHandler<_, _> =
    Windows.Foundation.TypedEventHandler(fun s e -> handler.Invoke(s, e))

Observable.fromEventConversionOn
    Scheduler.Scheduler.EventLoop
    conversion
    session.add_MediaPropertiesChanged
    session.remove_MediaPropertiesChanged

// Following doesn't compile
Observable.fromEventConversion
    conversion
    session.add_MediaPropertiesChanged
    session.remove_MediaPropertiesChanged

In decompiler:

image

I also wonder if there is better solution (for TypedEventHandler), Observable.fromEventGeneric doesn't work.

Type constraint mismatch. The type ''a -> unit' is not compatible with type 'Windows.Foundation.TypedEventHandler<GlobalSystemMediaTransportControlsSession,MediaPropertiesChangedEventArgs>'

shirok1 avatar Aug 14 '22 21:08 shirok1