如何保存C#自定义类列表<>文件流?

时间:2018-01-13 08:54:21

标签: c# unity3d filestream binaryformatter

我想在文件流中保存自定义类List(C#)(在Unity3d中)。我已经使用以下代码将[Serializable]类保存到内存中了:

[Serializable]
public class GameData
{
public int Score_SR;
public float ChaseCredits_SR;
}

以下保存数据的方法:

public void Save()
{
    BinaryFormatter bf = new BinaryFormatter();
    FileStream file = File.Create(Application.persistentDataPath + "/chaserace.cr");

    // Save data here from local to orignal data path storage i.e /chaserace.cr
    GameData data = new GameData();

    data.Score_SR = Score;
    data.ChaseCredits_SR = ChaseCredits;
    // this take the "data" class data and write it to our "chaserace.cr" file
    bf.Serialize(file , data);
    file.Close();
}

然后使用方法Load来加载数据。 但是,现在我想保存一个List<>自定义类“RawData”。我试过用List做同样的事,但是不能这样做。也许代码中会有一个适用于List<>的编辑。

这是我要保存到内存列表的类:

[Serializable]
public class RawData{

public string key; 
public int level;  
public string value;


public RawData(string key_,string value_,int level_){
    key = key_;
    level = level_;
    value = value_;

}
}

当我尝试加载数据时,会出现错误:

BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/chaserace.cr", FileMode.Open);
RawData rawData = (RawData)bf.Deserialize(file);
List<RawData> rawDataList=rawData; //Here is conversion error
file.Close();

1 个答案:

答案 0 :(得分:1)

你必须解析一个列表:

List<RawData> rawDataList = new List<RawData>() { rawData };

因为rawData是单个对象,但您希望转换List

例如:

int a = 1;
List<int> b = a; //Here will conversion error