C# 序列化包含数组的列表&;其他清单

C# 序列化包含数组的列表&;其他清单,c#,arrays,class,list,serialization,C#,Arrays,Class,List,Serialization,我一直在尝试序列化包含数组和列表的列表 我一直在尝试不同的事情,但都没能成功 我得到这个错误: 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; usin

我一直在尝试序列化包含数组和列表的列表

我一直在尝试不同的事情,但都没能成功

我得到这个错误:

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>();
}
}
你能给我指一下这里的正确方向吗


提前感谢。

您必须使所有类和子类都可序列化

[Serializable]
public class MapData
{
    [Serializable]
    public struct tileDataBackground
    {
        public int tileTextureX;
        public int tileTextureY;
    }
 ...
编辑



正如下面的注释所述,您在所有可序列化类的字段中使用的类型本身必须是可序列化的。不作为类结构的一部分使用或在不可序列化字段中使用的类型不需要序列化

更具体地说,您需要将要序列化的字段上使用的所有类标记为可序列化。序列化
公共tileDataBackground[,]tileBackground成员例如,
tileDataBackground
需要可序列化。(换句话说,您不需要将所有子类型标记为可序列化,除非您在父类型的字段中使用所有子类型——在本例中是这样,但这是一个重要的区别。)非常感谢您的回复,它解决了我的问题。wierd的事情是,我记得我试图将[Serializable]放在子类的顶部,但得到了一个错误。我想我是打字出错了。
[Serializable]
public class MapData
{
    [Serializable]
    public struct tileDataBackground
    {
        public int tileTextureX;
        public int tileTextureY;
    }
 ...