問題:
マーシャリングしようとしている固定サイズの構造体があります。この構造体には、現在のバージョンの構造体に役立つ多数のフィールドと、将来の変更のために予約されている最後に指定された量の未使用スペースが含まれています。
構造を変更したときに予約領域のサイズが自動的に更新されるようにするには、この構造をどのように設計すればよいですか?
以下は私の問題を解決しますが
'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))
ただし、定数式ではないためコンパイルされません。何か案は?