XmlSerializer在一种特定情况下不进行序列化

时间:2019-06-12 00:03:14

标签: c# xmlserializer

我正在尝试序列化一个相当简单的对象图。我有一个带有几个标量属性的Settings模型和一个Template类型的List。该Template对象具有2个字符串属性(“名称”和“路径”)。如果我仅在Template实例上设置“名称”,然后进行序列化,那么它将创建XML文件。它正确反序列化,我很高兴。

现在,如果我从第3方DLL将文件加载到内存中并将该文件路径存储到“ Path”属性,则序列化器将不再起作用。在Visual Studio的输出窗口中不会显示任何异常或错误。

当我加载该文件时可能会发生什么情况,从而阻止我序列化我的数据?我的对象图中没有任何第三方对象的引用。

[Serializable]
public class Settings
{
    public bool ReplicateToolParameters { get; set; }
    public bool CopyTool { get; set; }
    public List<Template> Templates { get; set; }

    public Settings()
    {
        ReplicateToolParameters = false;
        CopyStaticMaskTool = false;
        Templates = new List<Template>();
    }
}

[Serializable]
public class Template
{
    public string Name { get; set; }
    public string Path { get; set; }
}

我的TemplateView有一个“加载”按钮,该按钮创建一个OpenFileDialog以选择“ .avp”(第三方供应商的专有文件类型)。当我选择一个文件时,.avp被加载到内存中(在我的视图模型中使用第3方对象),并将文件路径保存到Template模型上的“ Path”属性中。如果不加载文件,则可以序列化。只需加载该文件,它就不再起作用。

0 个答案:

没有答案