0
我一直在试图序列化一个包含数组和列表的列表。序列化包含数组和列表的列表
我一直在尝试不同的事情,但无法使其工作。
我收到此错误:
Type 'EngineTest.MapData+tileDataBackground' in Assembly 'EngineTest, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null' is not marked as serializable.
这是我MapData.cs,我想在一个列表中连载。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EngineTest
{
[Serializable]
public class MapData
{
public struct tileDataBackground
{
public int tileTextureX;
public int tileTextureY;
}
public struct tileDataForeground
{
public int tileTextureX;
public int tileTextureY;
}
public struct tileDataCollision
{
public bool tileCollision;
}
public tileDataBackground[,] tileBackground;
public tileDataForeground[,] tileForeground;
public tileDataCollision[,] tileCollision;
public List<items> itemData = new List<items>();
public List<functions> functionData = new List<functions>();
}
}
这里是代码,我失败(Program.mapData是列表),以序列化:
using (FileStream stream = File.Open("test.dat", FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, Program.mapData);
stream.Close();
}
你能指出我到这里的正确方向?
在此先感谢。
更具体地说,您需要标记您想要序列化为可序列化的字段上使用的所有类。为了序列化'public tileDataBackground [,] tileBackground''成员,'tileDataBackground'需要可序列化。 (换句话说,除非您在父类型的字段中使用所有子类型,否则不需要将所有子类型标记为可序列化,在这种情况下是正确的,但这是一个重要区别。) – cdhowie
你非常希望得到答复,它解决了我的问题。 奇怪的是,我记得试图把[Serializable]放在子类的顶部,并得到一个错误。 我想我已经犯了一个打字错误。 – Theoden