在 F# 中发布事件的标准方式现在似乎如下:
type MyDelegate = delegate of obj * EventArgs -> unit
type MyType () =
let myEvent = new Event<MyDelegate, EventArgs> ()
[<CLIEvent>]
member this.OnMyEvent = myEvent.Publish
这很好用,包括能够从其他 .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
但这不会编译 - 接口中的成员会导致错误:“未找到与此覆盖相对应的抽象或接口成员”。我应该如何在我的界面中声明事件?还是我的成员语法错误?
注意 - 这不是关于在 F# 中使用 C# 事件或在 F# 中使用一般事件 - 接口方面是关键。