Неразрушимая ошибка в Blittable типе

У меня есть эта структура и этот код:

[StructLayout(LayoutKind.Sequential, Pack = 8)]
private class xvid_image_t
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public int[] stride;

    // [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    // public IntPtr[] plane;
}

public int decore()
{
    xvid_image_t myStruct = new xvid_image_t();
    myStruct.stride = new int[4]; // can be commented out - same result
    GCHandle.Alloc(myStruct, GCHandleType.Pinned);

    // ...
}

Когда я пытаюсь запустить его, я получаюArgumentException говоря:

Объект содержит непримитивные или неблизкие данные

После прочтенияэта страница MSDN поговорка

Следующие сложные типы также являются blittable типами:

Одномерные массивы blittable типов, такие как массив целых чисел. Тем не менее, тип, который содержит переменный массив blittable типов, сам по себе не является blittable.

Типы форматированных значений, которые содержат только blittable типы (и классы, если они маршалируются как форматированные типы). Для получения дополнительной информации о форматированных типах значений см. Маршалинг по умолчанию для типов значений.

Я нене понимаю, что я делаю не так. Я непросто хочу использоватьMarshal, но чтобы понять это тоже.

Так что я на самом деле хочу знать:

Зачем?Как я могу решить это?Будет ли решение, которое вы предлагаете, работать с закомментированной строкой в структуре?

Я использую .Net 4.5, но также необходимо решение для .Net 2.0.

Ответы на вопрос(3)

Ваш ответ на вопрос