使用自定义封送拆收器时使用C#Marshal.Sizeof()

本文关键字:C#Marshal Sizeof 自定义 | 更新日期: 2023-09-27 17:59:25

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

例如:

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

如果我打电话:

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

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

使用自定义封送拆收器时使用C#Marshal.Sizeof()

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