【发布时间】:2018-11-17 01:38:26
【问题描述】:
我有一些这样的代码可以正常工作:
type App() =
inherit Application()
let stack = StackLayout(VerticalOptions = LayoutOptions.Center)
let label = Label(XAlign = TextAlignment.Center, Text = "Welcome to F# Xamarin.Forms!")
do
let tapRecognizer = new TapGestureRecognizer()
let handleTapEvent (sender:Object) (args:EventArgs) =
label.Text <- "Tapped at " + DateTime.Now.ToString()
()
let tapEventHandler = new EventHandler(handleTapEvent)
tapRecognizer.Tapped.AddHandler(tapEventHandler)
label.GestureRecognizers.Add(tapRecognizer)
但是,当我将 args 从 EventArgs 更改为这样的派生类型时:
type TapEventArgs(someId:int) =
inherit EventArgs()
member this.SomeId = someId
let handleTapEvent (sender:Object) (args:TapEventArgs) =
label.Text <- args.SomeId.ToString() + " tapped"
()
调用 AddHandler 时出现以下错误
“EventArgs”类型与“TapEventArgs”类型不兼容
另外,如果我像这样更改 EventHandler:
let tapEventHandler = new EventHandler<TapEventArgs>(handleTapEvent)
我收到此错误
This expression was expected to have type 'EventHandler'
but here has type 'EventHandler<TapEventArgs>'
有什么方法可以强制派生类型?
【问题讨论】:
标签: xamarin.forms f#