Sto cercando di creare la seguente struttura:correttamente allineati o sovrapposte da un errore campo non oggetto
[StructLayout(LayoutKind.Explicit, Size=14)]
public struct Message
{
[FieldOffset(0)]
public ushort X;
[FieldOffset(2)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst=5)]
private ushort[] Y;
[FieldOffset(12)]
public ushort Z;
}
e ottengo il seguente errore:
Impossibile caricare il tipo 'Messaggio' da assembly perché contiene un campo oggetto con offset 4 che è allineato o sovrapposto in modo non corretto da un campo non oggetto.
Qualcuno sa perché questo sta causando un errore?
Nota: non riesco a utilizzare Pack perché sto lavorando con il framework compatto. Grazie.
Ok, quindi la risposta più semplice è nel commento qui sotto: Le matrici devono essere DWORD allineate nel CF – SwDevMan81
@ctacke: Potrebbe farmi riferimento a un riferimento che contiene informazioni dettagliate su Marshaler CF (ad esempio che gli array devono essere DWORD allgned)? – Odrade
@david: non ne conosco uno. Tutto quello che so del marshaler e le sue capacità (o la sua mancanza) derivano dall'incontro e dalle conversazioni con il team CF, insieme a anni di esperienza nel tentativo di farlo fare ciò che voglio. – ctacke