由于事件,无法在F#中正确实现XNA接口IUpdateable

时间:2011-11-04 10:16:31

标签: f# event-handling xna

我目前正在为我的新项目使用F#和XNA,但在实现XNA的IUpdateable接口时遇到困难。特别是当我需要实现事件处理程序时。

这就是我所拥有的:

let enabledChanged = new DelegateEvent<System.EventHandler>()

并进一步向下:

interface IUpdateable with
    ... // other stuff
    [<CLIEvent>]
    member self.EnabledChanged = enabledChanged.Publish

但是我收到了这个错误:

Error 2 This expression was expected to have type EventHandler but here has type EventHandler<EventArgs>

我已经尝试了几件事,但无法让它发挥作用。期待什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您是否尝试过以下方式定义enabledChanged

let enabledChanged = new Event<_>()

答案 1 :(得分:2)

我看到IUpdatable.EnabledChanged的类型为System.EventHandler&lt; System.EventArgs&gt;但是您使用的是没有类型参数的System.EventHandler。

type X() = 
    let enabledChanged = DelegateEvent<EventHandler<_>>()
    interface IUpdateable with
        [<CLIEvent>]
        member this.EnabledChanged = enabledChanged.Publish
type Y() = 
    let enabledChanged = Event<EventHandler<_>, _>()
    interface IUpdateable with
        [<CLIEvent>]
        member this.EnabledChanged = enabledChanged.Publish