我正在尝试序列化一个相当简单的对象图。我有一个带有几个标量属性的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”属性中。如果不加载文件,则可以序列化。只需加载该文件,它就不再起作用。