Błąd niemożliwy do usunięcia w typie błahym

Mam tę strukturę i ten kod:

[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);

    // ...
}

Kiedy próbuję go uruchomić, dostajęArgumentException powiedzenie:

Obiekt zawiera dane, które nie są prymitywne lub nie mogą być usuwane

Po przeczytaniuta strona MSDN powiedzenie

Następujące typy złożone są również typami blittable:

Jednowymiarowe tablice typu blittable, takie jak tablica liczb całkowitych. Jednak typ, który zawiera zmienną tablicę typów blittable, nie jest sam w sobie blittowalny.

Sformatowane typy wartości, które zawierają tylko typy blittable (i klasy, jeśli są zestawione jako typy sformatowane). Aby uzyskać więcej informacji na temat sformatowanych typów wartości, zobacz Domyślne zbieranie wartości dla typów wartości.

Nie rozumiem, co robię źle. Nie chcę tylko używaćMarshal, ale żeby to też zrozumieć.

Tak naprawdę chcę wiedzieć:

Czemu?Jak mogę rozwiązać ten problem?Czy dostarczone przez Ciebie rozwiązanie będzie działać również z linią skomentowaną w strukturze?

Korzystam z .Net 4.5, ale potrzebne jest również rozwiązanie dla .Net 2.0.

questionAnswers(3)

yourAnswerToTheQuestion