【发布时间】:2014-02-26 23:28:45
【问题描述】:
我正在尝试使用下面提供的对象序列化树结构。我需要用对象序列化子列表,但我可以没有父(因为我可以在反序列化时修复它)。
我遇到的问题是,无论我是否有[XmlIgnore],我仍然会收到此错误。
序列化类型对象时检测到循环引用 '数据输入'
如果我将“父”属性的“getter/setter”更改为不执行任何操作,则一切正常。
[XmlIgnore]
public DataEntry Parent
{
get { return null; }
set {}
}
但我需要在稍后阶段提供此父参考。
public class DataEntry
{
[XmlIgnore]
public DataEntry Parent { get; set; }
public List<DataEntry> Children { get; set; }
private List<String> mValues = new List<String>();
public List<String> Values
{
get
{
return mValues;
}
set
{
mValues = value;
}
}
private String mName = String.Empty;
public String Name
{
get { return mName; }
set
{
mName = value;
}
}
/// <summary>
/// Data entry
/// </summary>
/// <param name="partent">parent node - if root node give no parent</param>
/// <param name="name">Name of property</param>
/// <param name="values">Values for this property</param>
public DataEntry(DataEntry partent, String name, List<String> values)
{
Children = new List<DataEntry>();
Parent = partent;
mValues = values;
mName = name;
}
/// <summary>
/// Add a child to this node
/// </summary>
/// <param name="child"></param>
public void AddChild(DataEntry child)
{
Children.Add(child);
}
}
任何帮助将不胜感激。
【问题讨论】:
-
在将解决方案发布到全世界后,始终以您找到解决方案的方式。因此,要使 Xml 标记正常工作,我需要将其更改为
[ScriptIgnore]。对此的引用位于System.Web.Extentions下,命名空间为System.Web.Script.Serialization
标签: c# serialization circular-dependency