Dot-Net

如何在 F# 中創建與 .NET 兼容的事件?

  • May 26, 2009

我正在嘗試從 F# 類型發布事件,但我希望它被視為來自 C# 或 VB 的事件。似乎正確的方法曾經是 IEvent.create_HandlerEvent,但這個函式在最新版本的 F# 中不存在。那麼現在正確的做法是什麼?

事件不是我的強項,但這個例子似乎適用於 F# 1.9.6.16:

namespace EventExample
open System
type MyEventArgs(msg:string) =
   inherit EventArgs()
   member this.Message = msg

type MyEventDelegate = delegate of obj * MyEventArgs -> unit

type Foo() = 
   let ev = new Event<MyEventDelegate, MyEventArgs>()

   member this.Ping(msg) =
       ev.Trigger(this, new MyEventArgs(msg))

   [<CLIEvent>]
   member this.GotPinged = ev.Publish

也可以看看

http://cs.hubfs.net/forums/thread/10555.aspx

引用自:https://stackoverflow.com/questions/904235