2016-04-08 4 views
0

私はこの次構造体[StructLayout(LayoutKind.Sequential, Pack = 1)]KiteClassStructA StructB StructC StructDすべての構造体であるC#構造体のサイズを取得するために整列化されている構造体の内部でDictionaryを宣言するにはどうすればよいですか?

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

を持っているが、通常のクラスです。管理されていない構造としてマーシャリングすることはできません タイプ「MyApp.CombinedDS」;:

私はこのArgumentExceptionを取得しています意味の大きさやオフセットなしは

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

を使用して、構造体CombinedDSのサイズを取得しようとしていたとき、私は、この背後にある理論的な理由を知りたいとも正しい方法論または任意の提案が実現するためにを計算することができません私が望むもの。

答えて

0

辞書は、任意の数のアイテムのコレクションです。アイテムの追加/削除時に実行時に変更されるため、サイズはコンパイラには分かりません。

あなたが達成しようとしていることを実際には指定していないので、提案が必要な場合は、質問に情報を追加することができます。

関連する問題