2016-04-08 5 views
0

Ich habe dies folgende StrukturC# Wie kann ich ein Dictionary innerhalb einer Struktur deklarieren, die gemarshallt wird, um die Größe der Struktur zu erhalten?

[StructLayout(LayoutKind.Sequential, Pack = 1)] 
public struct CombinedDS 
{ 
    public HeaderStruct Header; 
    public StructA a; 
    public StructB b; 
    public StructC c; 
    public StructD d; 
    public Dictionary<string, KiteClass> KiteObjDict; 
} 

wo StructA StructB StructC StructD alle sind Strukturen mit [StructLayout(LayoutKind.Sequential, Pack = 1)] und KiteClass eine normale Klasse.

Ich erhalte dieses ArgumentException: Typ 'MyApp.CombinedDS' kann nicht als unmanaged Struktur gemarshallt werden; keine sinnvolle Größe oder Offset kann berechnet werden, wenn ich versuche, die Größe der Struktur CombinedDS mit

int varsize = Marshal.SizeOf(typeof(CombinedDS));

Ich mag den theoretischen Grund, dies wissen würde zu bekommen und auch die richtige Methodik oder jede Anregung zu erreichen was ich möchte.

Antwort

0

Ein Dictionary ist eine Sammlung von beliebig vielen Elementen. Die Größe ist dem Compiler nicht bekannt, da sie sich zur Laufzeit ändert, wenn Elemente hinzugefügt/entfernt werden.

Sie können Informationen zur Frage hinzufügen, wenn Sie Vorschläge haben möchten, da sie nicht genau angeben, was Sie erreichen möchten.

Verwandte Themen