C# Marshal.Sizeof() 使用自定义编码(marshal)拆收器时

标签 c# pinvoke marshalling

是否可以在使用自定义编码(marshal)拆收器的结构上使用 Marshal.SizeOf()

例如:

struct Abcde { 
  public int test1;
  [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(MyCustomMarshaler)]
  public string customString1;
}

如果我调用:

var size = Marshal.SizeOf(typeof(Abcde));

抛出一个异常,表示无法计算有意义的大小或偏移量。 我注意到 ICustomMarshaler 有一个名为 GetNativeDataSize() 的方法,但无论我在那里返回什么,都会抛出异常。

最佳答案

Marshal.SizeOf 不能用于包含自定义编码(marshal)成员的类型。

关于C# Marshal.Sizeof() 使用自定义编码(marshal)拆收器时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239320/

相关文章:

c# - 将 Color32[] 数组快速复制到 byte[] 数组

c# - LINQ to Entities 无法识别该方法,并且该方法无法转换为 store 表达式

c# - P/Invoke 返回 void*

c# - 检查 Request.IsAjaxRequest 在我的 asp.net mvc4 中总是返回 false

Windows API功能的.NET包装器

c# - 如何使用 PInvoke 传递图像

c# - 我可以在不使用 "unsafe"的情况下使用二维数组编码 C 结构吗?

go - go语言读取并合并两个yaml文件

c# - 本地 AppFabric 和本地 Memcache - 严格来说性能

c# - 如何在 C# 中使用代码重用?