序列化自定义类/对象的

时间:2017-06-17 19:51:17

标签: c# unity3d serialization binaryformatter

我正在尝试序列化我创建的类的3D锯齿状数组,当我调用BinaryFormatter时,我在binaryFormatter.Serialize()内收到以下错误:

  

NullReferenceException:未将对象引用设置为的实例   宾语   System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetAssemblyNameId   (System.String程序集)(at   /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:812)   System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetAssemblyId   (System.Reflection.Assembly assembly)(at   /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectWriter.cs:807)...

最明显的潜在问题是锯齿状阵列没有正确完全初始化,但情况并非如此。我已经测试了多个初始化策略,如果没有正确初始化,应用程序在序列化之前就会遇到问题。

值得注意的是,在初始化锯齿状数组之后,我遍历数组并为每个索引实例化ExampleClass()。

我在Unity 3D中这样做。

我错过了什么?

    BinaryFormatter binaryFormatter = new BinaryFormatter();

    FileStream fileStream = File.Create(Application.persistentDataPath + "/data.dat");

    // Initialize the jagged array      
    ExampleClass[][][] exampleClassArray = new ExampleClass[32][][];

    for (int i = 0; i < exampleClassArray.Length; i++)
    {
        exampleClassArray[i] = new ExampleClass[32][];

        for (int j = 0; j < exampleClassArray[i].Length; j++)
        {
            exampleClassArray[i][j] = new ExampleClass[32];
        }
    }

    // Populate the jagged array
    for (int i = 0; i < 32; i++)
    {
        for (int j = 0; j < 32; j++)
        {
            for (int k = 0; k < 32; k++)
            {
                exampleClassArray[i][j][k] = new ExampleClass();
            }
        }
    }

    binaryFormatter.Serialize(fileStream, exampleClassArray);

    fileStream.Close();

0 个答案:

没有答案