2011-11-04 52 views
1

我正在爲我的新項目使用F#和XNA,但在實現XNA的IUpdateable接口時卡住了。特別是當我需要實現事件處理程序時。由於事件原因,無法在F#中正確實現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

您是否嘗試過以下方式定義enabledChanged

let enabledChanged = new Event<_>() 
+1

謝謝,它的工作原理。但爲什麼我必須這樣定義它? –

2

,我看到IUpdatable.EnabledChanged具有類型System.EventHandler <System.EventArgs>,但使用的是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