在f#中阅读有关创建新事件的代码,我遇到了两个调用event.Publish和event.Trigger,但是我不太确定它们的含义。你能告诉我他们的工作吗?
请考虑手册中写的内容:
event.Publish将观察结果发布为一流的值。
event.Trigger使用给定的参数触发观察。
由于我是意大利人,因此在这种情况下使用的“观测”一词对我没有任何好处。
实现新的公开事件的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
Run Code Online (Sandbox Code Playgroud)
在CLIEvent公布的部件属性是可选的,但它是很好的了解它。它表示该成员将被编译为.NET事件(C#将其视为event)。如果不添加它,则F#会将其公开为type的成员IEvent(这对于F#使用是很好的)。