哪里消失了?
let triggerFindNext,findNextEvent = IEvent.create<EventArgs>()
Run Code Online (Sandbox Code Playgroud)
未定义字段,构造函数或成员"create"
也许我必须为它添加一些框架?
该IEvent.create
函数已被弃用.创建事件的新方法是创建该Event
类型的实例.在最简单的情况下,你可以这样写:
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
Run Code Online (Sandbox Code Playgroud)
这表示使用IEvent<_>
值的事件(如果将其作为属性公开,则不会生成.NET兼容事件)并且它使用Handler<_>
来自F#库的通用委托.
(如果要生成可从C#使用的.NET兼容事件,那么您需要添加CLIEvent
属性,并且您可以使用它的变量Event
将委托作为通用参数,如其他人已经提到的答案中所述)
编辑:我在这里发布了一个更完整的F#片段(具有更好的格式):http://fssnip.net/1d