public static FakeStruct CreateTable <T>(DataBuffer buffer) where T : unmanaged { int c = 0; unsafe { c = sizeof(T); } Type type = typeof(T); var fs = type.GetFields(); FakeStruct fsa = new FakeStruct(buffer, fs.Length * 3 + 1); fsa.SetData(0, type.Name); int s = 1; for (int i = 0; i < fs.Length; i++) { string typ = fs[i].FieldType.Name; string name = fs[i].Name; if (fs[i].FieldType.IsEnum) { fsa[s] = 4; } else { fsa[s] = Marshal.SizeOf(fs[i].FieldType); } s++; fsa.SetData(s, typ); s++; fsa.SetData(s, name); s++; } return(fsa); }