如何在F#中创建与.NET兼容的事件?
问题描述:
我想从F#类型发布事件,但我希望它被视为来自C#或VB的事件。看来正确的方法是IEvent.create_HandlerEvent,但是这个函数并不存在于最新版本的F#中。那么现在做什么是正确的方法呢?如何在F#中创建与.NET兼容的事件?
答
事件是不是我的专长,但这个例子似乎在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
参见
谢谢,它的工作原理:)请问如何做你知道CLIEventAttribute?我没有在文档/语言规范/谷歌的任何地方看到它...... – 2009-05-24 18:33:40