我目前正在为我的新项目使用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>
我已经尝试了几件事,但无法让它发挥作用。期待什么?
提前致谢!
答案 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