特别是在序列化/反序列化期间抛出InvalidOperationException时?

时间:2014-09-02 18:50:41

标签: c# .net

我将一些对象数据保存在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。
还有其他吗?

0 个答案:

没有答案