Я потратил много времени на поиск решения, но все еще не нашел его.
У меня есть 2 класса:
[StructLayout(LayoutKind.Sequential)]
public class Result
{
public int Number;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string Name;
public int Size;
}
[StructLayout(LayoutKind.Sequential)]
public class CoverObject
{
public int NumOfResults;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
public Result[] Results;
}
Мое ожидание, что команда Marshal.SizeOf(typeof(CoverObject))
вернет 52, но не, это всего лишь 20. Таким образом, все маршалл и unmarshall, которые я использую позже, не работают.
Похоже, что он только считает первый член (число) в классе результата. Я сделал что-то не так?