我会试着表明我的问题。
我有一个关键字值列表,我希望将其序列化为XML文件。我在这个网站上读过其他问题(question - question),最后我做了这个:
[Serializable]
[XmlType(TypeName = "Pair")]
public class NameValuePair
{
public String Key { get; set; }
public Object Value { get; set; }
public NameValuePair()
{
Key = null;
Value = null;
}
public NameValuePair(String k, Object v)
{
Key = k;
Value = v;
}
}
[Serializable]
[XmlType(TypeName = "FileTransfer_Configuration_File")]
public class ConfigTable : List<NameValuePair>
{
//more code
}
//Serialization example
XmlSerializer serializer = new XmlSerializer(typeof(ConfigTable));
using (StreamWriter writer = new StreamWriter(file))
{
serializer.Serialize(writer, configtable);
}
结果完全没问题:
<?xml version="1.0" encoding="utf-8"?>
<FileTransfer_Configuration_File xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Pair>
<Key>ini_Win</Key>
<Value xsi:type="xsd:boolean">true</Value>
</Pair>
<Pair>
<Key>son_Peticion</Key>
<Value xsi:type="xsd:string">defecto</Value>
</Pair>
</FileTransfer_Configuration_File>
当NameValuePair的value属性是List&lt;&gt;时,会出现问题。宾语。列表与LT;&GT;对象是可序列化的,但不在NameValuePair中:
List<Usuario> aux = new List<Usuario>();
aux.Add(new Usuario("pepito"));
aux.Add(new Usuario("juanito"));
aux.Add(new Usuario("miguelito", true, "c:/miguelito/"));
NameValuePair nvp = new NameValuePair("clave", aux);
XmlSerializer serializer = new XmlSerializer(typeof(NameValuePair));
using (StreamWriter writer = new StreamWriter(file))
{
serializer.Serialize(writer, nvp);
}
结果:System.Xml.dll中的'System.InvalidOperationException'和此输出:
<?xml version="1.0" encoding="utf-8"?>
<Pair xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Key>clave</Key>
//abrupt tnd of file
我怎样才能做我想做的事?谢谢