2010-12-17 7 views
3

どこが消えたのですか?F#IEvent.create

let triggerFindNext,findNextEvent = IEvent.create<EventArgs>() 

フィールド、コンストラクタまたはメンバ「を作成は、」多分私はそれのためにいくつかのフレームワークを追加する必要があります

が定義されていませんか?

+0

[F#で.NET互換のイベントを作成する方法](http://stackoverflow.com/questions/904235/how-to -create-net-compatible-events-in-f) – adrianbanks

答えて

6

IEvent.create機能は推奨されていません。イベントを作成する新しい方法は、Eventタイプのインスタンスを作成することです。これはIEvent<_>値を使用してイベントを表し、(あなたがプロパティとして公開場合、.NET互換のイベントは生成されません)

let evt = new Event<EventArgs>() 

// Trigger event (instead of first element of the tuple) 
evt.Trigger() 
// Returns IEvent<EventArgs> value (instead of second element of the tuple) 
evt.Publish 

、それはF#のライブラリーから、一般的なHandler<_>デリゲートを使用しています。最も単純なケースでは、あなたはこれを書くことができます。

(あなたがC#2から使用可能な.NET互換のイベントを生成したい場合、あなたはCLIEvent属性を追加する必要があり、the answer already mentioned by othersで説明したように、一般的なパラメータとして委任取りEventのバリアントを使用することができます)

はEDIT:私はここでより完全なF#スニペット(より良いフォーマットで)を投稿しました:http://fssnip.net/1d