Compte tenu de la fonction d'ordre supérieur F # (en fonction du paramètre):Appel d'un ordre supérieur fonction F # de C#
let ApplyOn2 (f:int->int) = f(2)
et la fonction C#
public static int Increment(int a) { return a++; }
Comment appeler ApplyOn2
avec Increment
en tant que paramètre (de C#)? Notez que ApplyOn2
est exporté en tant que Microsoft.FSharp.Core.FSharpFunc<int,int>
, ce qui ne correspond pas à la signature Increment
.
Le problème n'est pas sur des ensembles de référencement. Le problème est que ApplyOn2 est exporté en tant que Microsoft.FSharp.Core.FSharpFunc qui ne correspond pas à Increment. –
sthiers
Je l'ai essayé et cela fonctionne: > ClassLibrary1.Class1.Increment ;; session de liaison à 'J: \ Projects \ ClassLibrary1 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll' ... val il: int -> int = > let ApplyOn2 (f: int> int) = f (2) ;; val ApplyOn2: (int -> int) -> int > ApplyOn2 ClassLibrary1.Class1.Increment ;; val it: int = 2 –
ssp
@ssp: Ceci est un exemple d'appel C# de F #. F # est beaucoup plus indulgent à propos de la conversion des fonctions et des types de délégués, comme vous le signalez, cependant, la question est d'appeler F # de C#. –