2009-05-24 12 views
9

Sto tentando di pubblicare un evento da un tipo F #, ma voglio che venga visto come un evento da C# o VB. Sembra che il modo corretto per farlo fosse IEvent.create_HandlerEvent, ma questa funzione non esiste nella versione più recente di F #. Allora, qual è il modo corretto per farlo ora?Come creare eventi compatibili con .NET in F #?

risposta

13

Gli eventi non sono il mio forte, ma questo esempio sembra funzionare su 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 

Vedi anche

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

+0

Grazie, funziona :) Posso chiederle come ha fatto conosci il CLIEventAttribute? Non lo vedo menzionato da nessuna parte nella documentazione/lingua specifica/google ... –

+4

Lo so perché sono uno sviluppatore della squadra F #, quindi ho "informazioni interne". :) Sì, sembra che manchi dalle note di rilascio e dalle specifiche; faremo presto un aggiornamento delle specifiche. (Sentiti libero di darmi un supplemento oltre al segno di spunta :)) – Brian

+1

Devi amarlo quando gli addetti ai lavori appaiono con i prodotti ;-p –

Problemi correlati