C#Marshal.Sizeof()使用自定义封送程序时

时间:2014-04-23 08:51:56

标签: c# pinvoke marshalling

是否可以在使用自定义封送程序的结构上使用 Marshal.SizeOf()

例如:

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

如果我打电话:

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

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

1 个答案:

答案 0 :(得分:4)

Marshal.SizeOf不能与包含自定义封送成员的类型一起使用。