接下来的功能反应式编程教程,其中事件流(Observable)直接从System.Timers.Timer.Elapsed事件创建.
let timer = new System.Timers.Timer(float 1)
let observable = timer.Elapsed
observable
|> Observable.subscribe ...
Run Code Online (Sandbox Code Playgroud)
已经class定义了Observable
public delegate void OnMessageDelegate(Message message);
public class Notifier : INotifier
{
public event OnMessageDelegate OnMessage;
public void Notify(Message message)
=> OnMessage?.Invoke(message);
}
Run Code Online (Sandbox Code Playgroud)
引用相应Notifier.OnMessage成OnMessage项目,并试图建立add_OnMessage从remove_OnMessage事件
let Start (notifier : Namespace.Notifier) =
notifier.OnMessage
|> Observable.subscribe (fun ms -> ...
0
Run Code Online (Sandbox Code Playgroud)
获取错误消息
事件'OnMessage'具有非标准类型.如果此事件以另一种CLI语言声明,则可能需要使用事件的显式add_OnMessage和remove_OnMessage方法来访问此事件.如果在F#中声明此事件,则使事件类型为"IDelegateEvent < >"或"IEvent <,_>" 的实例化.
消息是自我描述的,我认为我的目标是从事件创建流而不是通过IDelegateEvent<_>方法订阅它.
似乎F#期望事件的委托类型System.EventHandler或特殊化System.EventHandler<'TEventArgs>.
尝试将OnMessagefrom 的类型更改OnMessageDelegate为EventHandler<Message>.