Event.Trigger Event.Publish f#

geo*_*y91 5 .net events f#

在f#中阅读有关创建新事件的代码,我遇到了两个调用event.Publish和event.Trigger,但是我不太确定它们的含义。你能告诉我他们的工作吗?

请考虑手册中写的内容: event.Publish将观察结果发布为一流的值。 event.Trigger使用给定的参数触发观察。

由于我是意大利人,因此在这种情况下使用的“观测”一词对我没有任何好处。

Tom*_*cek 5

实现新的公开事件的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#使用是很好的)。


mur*_*tgu 4

这里解释了很好。

简而言之,可以认为event.Publish是公开事件的一种方式,以便客户端可以通过调用Add函数来订阅。event.Trigger引发实际事件。