2009-05-24 15 views
9

F # türünden bir olay yayımlamaya çalışıyorum, ancak bunun C# veya VB'den bir olay olarak görülmesini istiyorum. Bunu yapmak için doğru yolu IEvent.create_HandlerEvent olarak kullanılmış gibi görünüyor, ancak bu işlev en yeni F # sürümünde mevcut değil. Peki şimdi bunu yapmanın doğru yolu nedir?F # ile .NET uyumlu olaylar nasıl oluşturulur?

cevap

13

Olaylar benim işim değildir, ancak bu örnek F # 1.9.6.16 üzerinde çalışmak için görünüyor:

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 

See da

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

+0

sayesinde çalışır :) Ben nasıl yaptığını sorabilir miyim CLIEventAttribute hakkında biliyor musun? Belgeleme/dil belirtiminde/google'da herhangi bir yerde bahsedildiğini görmüyorum ... –

+4

Biliyorum çünkü F # takımı üzerinde bir geliştiriciyim, bu yüzden 'içeriden bilgi' aldım. :) Evet, bu sürüm notlarından ve speklerden yoksun gibi görünüyor; yakında bir güncelleme yapacağız. (Onay işaretine ek olarak bana bir destek vermek için çekinmeyin. :)) – Brian

+1

İçeridekiler mallar ile görününce sevin; -p –

İlgili konular