C# Как я могу объявить словарь внутри структуры, которая собирается для получения размера структуры?

У меня есть следующая структура

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

где StructA StructB StructC StructD все являются структурами с [StructLayout(LayoutKind.Sequential, Pack = 1)]а также KiteClass это нормальный класс.

Я получаю это ArgumentException:Тип "MyApp.CombinedDS" нельзя маршалировать как неуправляемую структуру; Никакой значимый размер или смещение не могут быть вычислены, когда я пытаюсь получить размер структуры CombinedDS с помощью

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

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

1 ответ

Словарь - это коллекция любого количества предметов. Его размер не известен компилятору, так как он будет меняться во время выполнения, когда элементы добавляются / удаляются.

Возможно, вы захотите добавить информацию к вопросу, если вам нужны предложения, так как на самом деле не указано, чего вы пытаетесь достичь.

Другие вопросы по тегам