ho il seguente codice F # per gestire un evento Gtk.TreeView:Chiamare un metodo di C# sovraccarico di parametri fuori da F #
tree.CursorChanged.Add(fun (e : EventArgs) ->
let selection = tree.Selection
let mutable iter = new TreeIter()
if selection.GetSelected(&iter) then
Console.WriteLine("Path of selected row = {0}", model.GetPath(iter))
)
selection.GetSelected
ha due sovraccarichi, con le firme
bool GetSelected(out TreeIter, out ITreeModel)
e
bool GetSelected(out TreeIter)
che mi impedisce di utilizzare la versione tuple come descritto in this post:
let selection = tree.Selection
match selection.GetSelected() with
| true, iter -> // success
| _ -> // failure
Esiste un modo per specificare che GetSelected
sovraccarico voglio con quest'ultimo la sintassi?
Modifica: Per chiarire la domanda, so quale firma del metodo desidero; Non so come specificarlo. Per esempio, ho provato questo, che non ha funzionato:
let f : (byref<TreeIter> -> bool) = selection.GetSelected
match f() with
| true, iter -> // success
| _ -> // failure
come circa '| vero, iter, _ -> // successo'? – ildjarn
no, non riesce con l'errore di risoluzione del metodo: Un sovraccarico univoco per il metodo 'GetSelected' non può essere determinato in base alle informazioni sul tipo prima di questo punto del programma. Potrebbe essere necessaria un'annotazione di tipo. Candidati: TreeSelection.GetSelected (iter: byref): bool, TreeSelection.GetSelected (modello: byref , iter: byref ): bool –
Il messaggio di errore non ti ha dato la firma del tipo che devi applicare alla funzione che desideri ? 'TreeSelection.GetSelected (iter: byref): bool' –