【发布时间】:2014-06-25 12:10:39
【问题描述】:
我正在使用 silverlight 并使用 c# 代码进行序列化。
我有一个parameters 类,里面有parameter 和separator 列表:
[XmlRoot(ElementName = "parameters")]
public class Parameters
{
[XmlElement("separator")]
public List<Separator> Separator { get { return a1; } }
private readonly List<Separator> a1 = new List<Separator>();
[XmlElement("parameter")]
public List<Parameter> Parameter { get { return b1; } }
private readonly List<Parameter> b1 = new List<Parameter>();
}
在我的 Parameter 类中再次:
[XmlElement("name")]
public string Name { get; set; }
还有:
[XmlElement("component")]
public List<Component> Component { get { return b3; } }
private readonly List<Component> b3 = new List<Component>();
等等。
现在我在主函数下面使用 XmlWriter:
public void Main()
{
Parameters[] prs = new Parameters[4];
prs[0] = new Parameters();
prs[1] = new Parameters();
prs[2] = new Parameters();
prs[0].Parameter[0].Name = "shek1";
prs[0].Parameter[0].Component[0].Type = "type1";
prs[1].Separator[0].Separators = "sep1";
prs[2].Parameter[0].Name = "shek2";
prs[2].Parameter[0].Component[0].Type = "type2";
StringBuilder output = new StringBuilder();
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
using (XmlWriter writer = XmlWriter.Create(output, ws))
{
writer.WriteStartDocument();
writer.WriteStartElement("Parameters");
int count = 0;
foreach (var param in prs)
{
writer.WriteStartElement("Parameter");
writer.WriteElementString("Name", param.Parameter[count].Name);
writer.WriteStartElement("Component");
writer.WriteElementString("Type", param.Parameter[count].Component[0].Type);
writer.WriteStartElement("Attribute");
writer.WriteElementString("Items", param.Parameter[count].Component[0].Attributes[0].Items[count]);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
我得到的错误是Index was out of range. It must not be negative and must be less than the size of the collection. 在行prs[0].Parameter[0].Name = "shek1";。
我知道问题出在参数类中。我有 Parameter 类,如果我为 Parameters 类的字段分配任何值,它就可以工作,但是当我转到 Parameter 类时,它的索引超出范围错误。
我该如何解决这个问题?
【问题讨论】:
标签: c# .net xml xml-serialization xmlwriter