编辑:原始问题是由误解造成的,并且已经更新。
来自其他语言似乎很奇怪,C#似乎没有简单的方法将对象和组件之类的内容直接转储到文件中。
让我们以java为例,我可以将任何对象转储到文件并加载,没有明显的限制:
//Save object to file:
FileOutputStream saveFile = new FileOutputStream(---filePath---);
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(---YorObjectHere---);
//Load object from file
FileInputStream saveFile = new FileInputStream(---filePath---);
ObjectInputStream save = new ObjectInputStream(saveFile);
---ObjectType--- loadedObject = (---ObjectType---) save.readObject();
在C#中可以轻松实现这类事吗?
我尝试过标准的序列化方法:
//Save object to file:
IFormatter formatterSave = new BinaryFormatter();
Stream streamSave = new FileStream(---filePath---, FileMode.Create, FileAccess.Write, FileShare.None);
formatterSave.Serialize(streamSave, ---ObjectToSave---);
//Load object from file
IFormatter formatterLoad = new BinaryFormatter();
Stream streamLoad = new FileStream(---filePath---, FileMode.Open, FileAccess.Read, FileShare.Read);
---ObjectType--- ---LoadedObjectName--- = (---ObjectType---)formatterLoad.Deserialize(streamLoad);
虽然这种方法很简单,但它并不总是适用于现有代码或锁定代码,因为无法始终添加[serializable]
代码。
那么序列化的最佳替代方法是什么?
感谢评论,我尝试了XML方法,但它无法正常工作,因为它无法序列化MSDN
上显示的ArrayList //Save object to file:
var serializerSave = new XmlSerializer(typeof(objectType));
writer = new StreamWriter(filePath, append);
serializerSave.Serialize(writer, objectToWrite);
//Load object from file
var serializerLoad = new XmlSerializer(typeof(objectType));
reader = new StreamReader(filePath);
return (T)serializerLoad.Deserialize(reader);
看起来JSON是唯一可以轻松实现的方法,还是有另一种方法可以在不需要大量代码的情况下使用普通的C#库进行序列化?
答案 0 :(得分:1)
感谢那些评论并指出我正确方向的人。
虽然它没有在基本库中涵盖,但在这种情况下使用JSON看起来是最好的替代,我打算使用Json.NET,它可以在这里找到:http://www.nuget.org/packages/Newtonsoft.Json
另一个不错的选择是Google Gson:https://code.google.com/p/google-gson/