イベントを公開する新しい F# 型を実装する際の一般的なパターンは、イベント値をローカル フィールドとして作成event.Trigger
し、コード内のどこかを使用してイベントをトリガーし、次を使用して型のユーザーに公開することですtrigger.Publish
。
type Counter() =
// Create the `Event` object that represents our event
let event = new Event<_>()
let mutable count = 0
member x.Increment() =
count <- count + 1
if count > 100 then
// Trigger the event when count goes over 100. To keep the sample
// simple, we pass 'count' to the listeners of the event.
event.Trigger(count)
// Expose the event so that the users of our type can register event handlers
[<CLIEvent>]
member x.LimitReached = event.Publish
パブリッシュされたメンバーのCLIEvent
属性はオプションですが、知っておくとよいでしょう。これは、メンバーが .NET イベントにコンパイルされることを示しています (そして、C# はそれを として認識しますevent
)。追加しない場合、F# はそれを型のメンバーとして公開しますIEvent
(これは F# の使用には問題ありません)。