现在,在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#中的一般事件使用 - 接口方面是关键.