如何在F#中创建与.NET兼容的事件?

Mic*_*ski 9 .net events f#

我试图从F#类型发布一个事件,但我希望它被视为来自C#或VB的事件.似乎正确的方法曾经是IEvent.create_HandlerEvent,但是这个函数在最新版本的F#中不存在.那么现在正确的做法是什么?

Bri*_*ian 13

事件不是我的强项,但这个例子似乎适用于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
Run Code Online (Sandbox Code Playgroud)

也可以看看

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

  • 我知道因为我是F#团队的开发人员,所以我有'内部信息'.:)是的,这似乎在发行说明和规范中缺失; 我们很快就会做一个规范更新.(除了复选标记外,请随时给我一个upvote.:)) (4认同)