Обработка событий в F # действительно вызывает головную боль для меня. Ошибка я облицовкойИспользование пользовательского события в F #
This expression was expected to have type
obj -> unit
but here has type
System.EventHandler<obj>
Я опубликовать событие следующим образом
type ...
let dataChanged = new Control.Event<obj>()
[<CLIEvent>]
member this.DataChanged = dataChanged.Publish
member private this.NotifyDataChanged(sender : obj) =
dataChanged.Trigger(sender)
И я пытаюсь поймать его, как это
type ...
let dataChangedHandler = new System.EventHandler<obj>(fun sender -> this.DataItems_DataChanged(sender))
do this.DataItems.DataChanged.Add(dataChangedHandler)
member private this.DataItems_DataChanged(sender : obj) =
...
Как сказано, код не компилируется. Я пробовал разные варианты, но просто не могу заставить его работать. Любая помощь будет оценена по достоинству.
Компилятор ясно говорит вам: 'dataChangedHandler', как ожидается, будет типа' OBJ -> unit'. Просто не заверните его в «EventHandler», это сработает. –
@ fyodor-soikin Что было бы правильным синтаксисом в этом случае? Насколько я понимаю, я не могу просто использовать 'new obj (fun sender -> this.DataItems_DataChanged (sender))' – user6423491
'new obj' создает экземпляр' obj', но вам нужно 'obj -> unit' , Это просто функция. –