小编Paw*_*uch的帖子

在F#中使用自定义Marshaller

我最近一直在玩 F#中的编组,令我惊讶的是我最终得到了错误FS0980:不能在F#代码中指定自定义编组.考虑使用C#辅助函数.

我设法找到的有关该主题的信息仅为F#4.0 Spec(第300页)

应用于参数或返回类型时,指定CLI P/Invoke存根声明的编组属性.此属性可以在F#和导入的程序集中使用.但是,F#不支持"自定义"marshallers的规范.

我最感兴趣的是缺乏定制marshallers支持的原因,因为我可以"忍受"将C#程序集引入项目.

谁能澄清一下这个?

编辑:

请求的示例代码

[<StructLayout(LayoutKind.Sequential, Pack=1)>]
type BASIC_STRUCT =
  struct
    [<MarshalAsAttribute(UnmanagedType.CustomMarshaler,MarshalTypeRef=typedefof<DateTimeMarshaller>)>]
    val timeVar:DWORD
  end
Run Code Online (Sandbox Code Playgroud)

从我注意到只是设置UnmanagedType.CustomMarshaler足以导致编译时异常

.net f# marshalling

9
推荐指数
1
解决办法
123
查看次数

标签 统计

.net ×1

f# ×1

marshalling ×1