Ich habe vor kurzem mit dem Marshalling in F # gespielt und zu meiner Überraschung endete ich mit Fehler FS0980: Benutzerdefinierte Marshaller können nicht im F # -Code angegeben werden. Erwägen Sie die Verwendung einer C # -Hilfsfunktion.
Nur Informationen zu dem Thema, das ich gefunden habe, sind F # 4.0 Spec (Seite 300)
Bei Anwendung auf einen Parameter oder einen Rückgabetyp Gibt das Marshalling-Attribut für eine CLI an P / Aufruf Stub-Deklaration. Dieses Attribut kann sowohl in F # als auch in importierte Baugruppen F # jedoch nicht unterstütze die Spezifikation von "custom" Marshaller.
Ich bin hauptsächlich an Gründen interessiert, die hinter der mangelnden Unterstützung von Custom Marshallers liegen, da ich mit der Einführung von C # assembly leben kann.
Kann jemand darüber klarstellen?
BEARBEITEN:
Beispielcode wie angefordert
%Vor%Von dem, was ich bemerkt habe, genügt es, UnmanagedType.CustomMarshaler zu setzen, um eine Kompilierungszeitausnahme zu verursachen
Mit Blick auf den Compiler-Code scheint es das F # -Team zu sein Ich konnte mich nicht wirklich darüber entscheiden:
%Vor%Es gibt keine Geschichte um diesen Code auf github. Mein Bauchgefühl ist, dass die Erklärung etwas wie "ungewöhnlicher Anwendungsfall mit einem billigen Workaround" sein würde. Sehr wahrscheinlich war es von Anfang an so, denn F # 2.0 spec hat auch die von Ihnen angegebene Zeile.
Versuchen Sie, ein Problem bei github zu melden. Vielleicht kann da jemand in Microsoft-Systemen etwas ausgraben.
Tags und Links .net f# marshalling