Я постараюсь показать свои проблемы.
У меня есть список пар ключей-значений, которые я хочу сериализовать в файл XML. Я читал другие вопросы ( вопрос - вопрос ) на этом сайте и, наконец, я сделал это:
[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 является объект List <>. Объекты List <> сериализуемы, но не внутри 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.InvalidOperationException» в System.Xml.dll и этот вывод:
<?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
Как я могу делать то, что хочу? Спасибо