为什么我的自定义类没有正确序列化?或者是吗?

时间:2016-03-22 03:43:13

标签: c# arrays list class serialization

我正在尝试序列化自定义类,但它有一个List<>其中的另一个自定义类。

自定义类非常简单:

[Serializable]
public class World
{
    public List<TileData> WorldTiles = new List<TileData>(); //Collection of all tiles.
}

无法通过网络发送,没有错误,没有警告,没有消息。客户端永远不会收到数据。

然而,如果我做同样的事情只有一个TileData而不是List,那么它的作用是什么。

[Serializable]
public class TileData
{
    public myVector3 myPosition = new myVector3();   //Tile's Transform.Position
    public myVector2 tilePosition = new myVector2(); //Tile's TilePosition
    public string myName; //Name of Prefab to load (What Tile type?)
    public string myBiome; //Biome the Tile belongs to

    public List<ObjectData> myObjects = new List<ObjectData>(); //A list of all the Tile's objects.
}

如果我发送单个&#34; TileData&#34;一切都很好。

如果我发送一个&#34; World&#34;通过网络对象,它失败了。没有错误,客户端永远不会收到数据。

我知道你的第一个想法是错误可能在网络部分,但其他一切都很完美(所有原语,byte []我手动创建,我的自定义类&#34; TileData& #34;序列化,但不是我的自定义类&#34; World&#34;。这是唯一没有通过的东西。)

所以我认为我可能错误地序列化了这个特定的类?

我使用了两种方法,都做同样的事情,

// Convert an object to a byte array
public static byte[] ObjectToByteArray(System.Object obj)
{
    BinaryFormatter bf = new BinaryFormatter();
    MemoryStream ms = new MemoryStream();
    bf.Serialize(ms, obj);
    return ms.ToArray();
}

// Convert an object to a byte array
  public static byte[] ObjectToByteArray(World obj)
  {
      BinaryFormatter bf = new BinaryFormatter();
      using (var ms = new MemoryStream())
      {
          bf.Serialize(ms, obj);
          ms.close();
          return ms.ToArray();
      }
  }

0 个答案:

没有答案