我正在尝试序列化TreeView对象中的所有TreeNodes。麻烦的是,如果节点具有相同的名称,则会抛出SerializationException。
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
try
{
foreach (TreeNode node in this.Nodes)
{
info.AddValue(node.FullPath, node);
}
}
catch (Exception ex)
{
if (ex.Message == "Cannot add the same member twice to a SerializationInfo object.")
{
MessageBox.Show("You cannot save more than one gallery with the same name. Change the name(s) and try again.");
}
}
}
使用AddValue()添加对象时,我可以将名称设为任意名称,以免发生冲突吗?
如果做错了,建议的解决方案是什么?
答案 0 :(得分:1)
是的,名称可以是'任意' - 但名称可以不在同一序列化信息中重复。
请参阅SerializationInfo.AddValue Method (String, Object)。
[引发] SerializationException [if]一个值已经与name关联。
和
如果添加两个名称仅按大小写不同的值,则不会抛出任何异常,这不是推荐的做法。但是,添加两个具有完全相同名称的值将导致抛出SerializationException。
这是因为SerializationInfo充当字典/关联数组。