我将一些对象数据保存在xml文件中以保持持久性。当我的程序运行时,它首先读取xml文件并将其数据加载到内存中。在整个程序运行期间的不同时间,它通过用内存中的新数据覆盖整个文件将数据保存到同一个xml文件中。
保存和加载操作非常相似,如下所示:
public void SaveProfiles()
{
if (!Directory.Exists(profilesDir))
{
Directory.CreateDirectory(profilesDir);
}
try
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Profile>));
StreamWriter streamwriter = new StreamWriter(profilesDir + profilesSaveFile);
serializer.Serialize(streamwriter, profileList);
}
//streamwriter and other exceptions removed here for brevity
catch (InvalidOperationException)
{
//handle error
}
finally
{
//do some stuff
}
}
我已经意识到应该在
期间抛出InvalidOperationException
serializer.Serialize(streamwriter, profileList);
我会丢失数据,因为文件已被
覆盖StreamWriter streamwriter = new StreamWriter(profilesDir + profilesSaveFile);
在上一行。
所以我想知道exactly under what circumstances is InvalidOperationException thrown during serialization and deserialization?
我还没有找到很多相关内容,但是根据我自己的反复试验,我知道typeof
XMLSerializer
与{{1}}中的类型不同XML。
还有其他吗?