Используя ссылку из ... http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx У меня есть сериализуемый универсальный словарь.
Одна вещь, которую я хотел сделать, это добавить Ключ в узлы Атрибутов Значений (только потому, что я так хотел отформатировать) Часто Ключ - это просто строка. Есть ли способ заставить класс придерживаться этого? Это говорит мне, что TKey не может быть приведен к строке из read.GetAttribute ("Key"); на узле Значение.
while (reader.NodeType != System.Xml.XmlNodeType.EndElement)
{
reader.ReadStartElement("Entry");
reader.ReadStartElement("Key");
//TKey key = (TKey)keySerializaer.Deserialize(reader);
reader.ReadEndElement();
reader.ReadStartElement("Value");
TKey key = reader.GetAttribute("Name");
TValue value = (TValue)valueSerializer.Deserialize(reader);
reader.ReadEndElement();
this.Add(key, value); reader.ReadEndElement(); reader.MoveToContent();
}
Аналогично, соответствующий «WriteXml» ...
writer.WriteStartElement("Entry");
writer.WriteStartElement("Key");
keySerializaer.Serialize(writer, key);
writer.WriteEndElement();
writer.WriteStartElement("Value");
writer.WriteAttributeString("Name", key.ToString());
TValue value = this[key];
valueSerializer.Serialize(writer, value);
writer.WriteEndElement();
writer.WriteEndElement();