Я пытаюсь преобразовать из C ++ в C # структуру, которая выглядит примерно так:
typedef struct FooStruct {
Uint8 bytesPerThingie;
void *arrayOfThingies;
// other members ...
}
Итак, в этом случае есть два неизвестных:
- Количество элементов в массиве.
- Размер (в байтах) каждого элемента.
Ранее я успешно упорядочил саму структуру с таким определением:
[StructLayout(LayoutKind.Sequential)]
public struct FooStruct {
public byte bytesPerThingie;
public IntPtr arrayOfThingies;
// other members...
}
но теперь мне нужно проверить и изменить встроенный массив.
Я понимаю, что
- Сам по себе массив элементов Blittable типа Blittable
сам по себе, но не когда он используется в качестве поля в
структура.
- При маршалинге из неуправляемого кода в .NET Framework длина массива равна
определяется из аргумента SizeConst, за которым может следовать неуправляемый тип
элементов массива, если они не являются блистерными.
Даже если предположить, что в этом случае элементы массива относятся к типу blittable, как я могу установить SizeConst, аргумент времени компиляции, если я не могу знать размер массива до времени выполнения?