Не удается правильно реализовать интерфейс XNA IUpdateable в F # из-за событий - PullRequest
1 голос
/ 04 ноября 2011

В настоящее время я использую 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 ]

2 голосов
/ 05 ноября 2011

как я вижу IUpdatable.EnabledChanged имеет тип System.EventHandlerно вы используете 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
2 голосов
/ 04 ноября 2011

Вы пытались определить enabledChanged следующим образом?

let enabledChanged = new Event<_>()
...