问题:
我有一个固定大小的结构,我正在尝试编组。此结构包含许多用于当前版本的结构的有用字段,以及末尾指定数量的未使用空间,为将来的修改保留。
我应该如何设计这种结构,以便在修改结构时自动更新保留空间的大小?
虽然以下内容可以解决我的问题
'Variable size structure
<StructLayout(LayoutKind.Sequential, Pack:=1)>
Structure UsefulData
Dim foo As SByte
Dim bar As Integer
Dim foobar As Short
End Structure
Const MAX_SIZE As Integer = 20
'Fixed size structure
<StructLayout(LayoutKind.Sequential, Pack:=1, Size:=MAX_SIZE>
Structure Data
Dim current As UsefulData
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_SIZE-System.Runtime.InteropServices.Marshal.SizeOf(GetType(UsefulData)))>
Dim reserved As SByte()
End Structure
但不能编译,因为System.Runtime.InteropServices.Marshal.SizeOf(GetType(UsefulData))
它不是常量表达式。有任何想法吗?