2009-05-24 6 views
9

मैं एक एफ # प्रकार से एक कार्यक्रम प्रकाशित करने की कोशिश कर रहा हूं, लेकिन मैं इसे सी # या वीबी से एक घटना के रूप में देखना चाहता हूं। ऐसा लगता है कि इसे करने का सही तरीका IEvent.create_HandlerEvent होता था, लेकिन यह फ़ंक्शन F # के नवीनतम संस्करण में मौजूद नहीं है। तो अब इसे करने का सही तरीका क्या है?एफ # में .NET- संगत घटनाओं को कैसे बनाएँ?

उत्तर

13

घटनाक्रम मेरी विशेष क्षमता नहीं हैं, लेकिन इस उदाहरण एफ # 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

+0

धन्यवाद, यह काम करता है :) मैं पूछ सकता हूँ कैसे किया आप CLIEventAttribute के बारे में जानते हैं? मुझे यह दस्तावेज/भाषा विनिर्देश/google में कहीं भी उल्लेख नहीं किया गया है ... –

+4

मुझे पता है क्योंकि मैं एफ # टीम पर डेवलपर हूं, इसलिए मेरे पास 'जानकारी के अंदर' है। :) हाँ, यह रिलीज नोट्स और spec से गायब लगता है; हम जल्द ही एक spec अद्यतन कर रहे होंगे। (मुझे चेक मार्क के अलावा एक अपवर्त देने के लिए स्वतंत्र महसूस करें। :)) – Brian

+1

जब अंदरूनी सूत्र माल के साथ प्रकट होते हैं तो उसे प्यार करना चाहिए ;- –

संबंधित मुद्दे