在f#中读取有关创建新事件的代码我遇到了两个调用event.Publish和event.Trigger,但我不太清楚它们的含义。你能告诉我他们做了什么吗?
请考虑手册中的内容:
event.Publish
将观察结果作为第一类值发布。
event.Trigger
使用给定的参数触发观察。
由于我是意大利语,因此在这种情况下使用的“观察”一词对我没有任何帮助。
答案 0 :(得分:4)
实现公开事件的新F#类型时的典型模式是将事件值创建为本地字段,使用代码中某处的event.Trigger
触发事件,并使用{将其公开给您的类型的用户{1}}:
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
属性是可选的,但了解它是很好的。它表示该成员将被编译为.NET事件(并且C#将其视为CLIEvent
)。如果你不添加它,那么F#只是作为event
类型的成员公开它(这对于F#使用是好的。)
答案 1 :(得分:2)
很好地解释了here。
简而言之,将event.Publish
视为公开事件的一种方式,以便客户可以通过调用Add
函数进行订阅。 event.Trigger
提出了实际的事件。