F# 从回调方法可以观察到
假设我有一个类,它继承了遗留API并重写了一个虚拟方法,在发生某些事情时调用该虚拟方法F# 从回调方法可以观察到,f#,observable,reactive-programming,system.reactive,rx.net,F#,Observable,Reactive Programming,System.reactive,Rx.net,假设我有一个类,它继承了遗留API并重写了一个虚拟方法,在发生某些事情时调用该虚拟方法 type MyClass() as this = let somethingObservable: IObservable<Something> = ... override _.OnSomething(s: Something) = ... 键入MyClass(),如下所示= 让某物可观测:IObservable=。。。 覆盖u.OnSomething(s:Something
type MyClass() as this =
let somethingObservable: IObservable<Something> = ...
override _.OnSomething(s: Something) = ...
键入MyClass(),如下所示=
让某物可观测:IObservable=。。。
覆盖u.OnSomething(s:Something)=。。。
如何将OnSomething的每次调用转换为某个可观察事物的通知
这可能是一个简单的问题,但我找不到正确的方法(我应该使用not advised ISubject吗?)。感谢您的帮助。使用这样的主题很好,可以确保实现的正确性。 下面是一个使用
FSharp.Control.Reactive
的示例,它为您提供了编写此文档的惯用方法
type MyClass() =
inherit Legacy()
let somethingObservable =
Subject.broadcast
override _.OnSomething s =
somethingObservable |> Subject.onNext s |> ignore
member _.AsObservable =
somethingObservable |> Observable.asObservable
您还可以使用新主题
及其方法,同样。
在某些程序集中,如果您不愿意接受系统。被动的
依赖关系,F#还通过事件本机支持IObservable
type MyClassEvt() =
inherit Legacy()
let event = new Event<_>()
override _.OnSomething s =
event.Trigger s
member _.AsObservable =
event.Publish :> IObservable<_>
键入MyClassEvt()=
继承遗产
让事件=新事件()
覆盖u.OnSomething s=
事件。触发s
成员u.AsObservable=
event.Publish:>IObservable
使用这样的主题很好,可以确保实现的正确性。
下面是一个使用FSharp.Control.Reactive
的示例,它为您提供了编写此文档的惯用方法
type MyClass() =
inherit Legacy()
let somethingObservable =
Subject.broadcast
override _.OnSomething s =
somethingObservable |> Subject.onNext s |> ignore
member _.AsObservable =
somethingObservable |> Observable.asObservable
您还可以使用新主题
及其方法,同样。
在某些程序集中,如果您不愿意接受系统。被动的
依赖关系,F#还通过事件本机支持IObservable
type MyClassEvt() =
inherit Legacy()
let event = new Event<_>()
override _.OnSomething s =
event.Trigger s
member _.AsObservable =
event.Publish :> IObservable<_>
键入MyClassEvt()=
继承遗产
让事件=新事件()
覆盖u.OnSomething s=
事件。触发s
成员u.AsObservable=
event.Publish:>IObservable