小编kol*_*tiv的帖子

如何在F#界面中声明事件?

现在,在F#中发布事件的标准方法如下:

type MyDelegate = delegate of obj * EventArgs -> unit

type MyType () =
    let myEvent = new Event<MyDelegate, EventArgs> ()

    [<CLIEvent>]
    member this.OnMyEvent = myEvent.Publish
Run Code Online (Sandbox Code Playgroud)

并且工作正常,包括能够从其他.NET语言中消耗该事件(C#至少我已经测试过).但是如何让这个事件出现在界面中呢?这是我正在尝试的......

type MyDelegate = delegate of obj * EventArgs -> unit

type IMyType =
    abstract member OnMyEvent : IEvent<MyDelegate, EventArgs>

type MyType () =
    let myEvent = new Event<MyDelegate, EventArgs> ()

    interface IMyType with
        [<CLIEvent>]
        member this.OnMyEvent = myEvent.Publish
Run Code Online (Sandbox Code Playgroud)

但是这不会编译 - 接口中的成员会导致错误:"找不到与此覆盖相对应的抽象或接口成员".我该如何在界面中声明该事件?或者是我的成员语法错了吗?

注意 - 这不是关于消耗F#中的C#事件或F#中的一般事件使用 - 接口方面是关键.

events f# interface

18
推荐指数
2
解决办法
1432
查看次数

标签 统计

events ×1

f# ×1

interface ×1