J'appelle une API C # qui utilise des surcharges et des paramètres facultatifs. Malheureusement, l'une des surcharges est une params object[]
et f # sélectionne sur une surcharge plus spécifique que j'avais l'intention d'appeler. Comment faire F # Sélectionnez la surcharge que je veux?
Voici une petite repro . et voici un lien vers l'API réelle .
open System
open System.Linq.Expressions
type S =
static member Foo(expression: Expression<Func<int>>, ?gg: string) =
"expression"
static member Foo([<ParamArray>] args: obj[]) =
"params array"
[<EntryPoint>]
let main argv =
// This prints "params array", but I want it to print "expression"
let result = S.Foo(fun () -> 3, "")
printfn "%s" result
0
Pour appeler la version d'expression avec deux arguments, vous avez besoin:
let result = S.Foo((fun () -> 3), "")
Dans votre code, vous avez effectivement défini une fonction qui renvoie une (3, "")
Tuple, qui n'est qu'un seul argument.