Angesichts der F # Funktion höherer Ordnung (eine Funktion in Parameter genommen wird):Anruf eine höhere Ordnung F # Funktion von C#
let ApplyOn2 (f:int->int) = f(2)
und die C# Funktion
public static int Increment(int a) { return a++; }
Wie kann ich ApplyOn2
mit Increment
nennen als Parameter (von C#)? Beachten Sie, dass ApplyOn2
als Microsoft.FSharp.Core.FSharpFunc<int,int>
exportiert wird, die nicht mit der Signatur Increment
übereinstimmen.
Das Problem besteht nicht auf referenzierenden Baugruppen. Das Problem ist, dass ApplyOn2 als Microsoft.FSharp.Core.FSharpFunc exportiert wird, die nicht mit Increment übereinstimmen. –
sthiers
Ich habe es versucht und es funktioniert: > ClassLibrary1.Class1.Increment ;; Binding-Sitzung zu 'J: \ Projects \ ClassLibrary1 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll' ... val es: int -> int = > lassen ApplyOn2 (f: int-> int) = f (2) ;; val ApplyOn2: (int -> int) -> int > ApplyOn2 ClassLibrary1.Class1.Increment ;; val it: int = 2 –
ssp
@ssp: Dies ist ein Beispiel für den Aufruf von C# von F #. F # ist viel verzeihender über die Konvertierung von Funktionen und Delegaten, wie Sie bemerken, aber die Frage ist, F # von C# anzurufen. –