Framework 2.0中.NET中的可序列化词典

Framework 2.0中.NET中的可序列化词典,.net,xml,serialization,dictionary,.net,Xml,Serialization,Dictionary,我在c#(framework 2.0)中搜索了一个可序列化的字典,发现了这个: 这很好,但我想让它像这样序列化我的字典: <item> <key>my_first_key</key> <value>my_first_value</value> </item> <item> <key>my_second_key</key> <value>my_s

我在c#(framework 2.0)中搜索了一个可序列化的字典,发现了这个:

这很好,但我想让它像这样序列化我的字典:

<item>
    <key>my_first_key</key>
    <value>my_first_value</value>
</item>
<item>
    <key>my_second_key</key>
    <value>my_second_value</value>
</item>
writer.WriteStartElement("item")
writer.WriteElementString("key", key.ToString)   
writer.WriteElementString("value", value.ToString)  
Me.Add(key, value)
它工作得很好,但是要将xml输入反序列化为字典,我无法使它工作。我试过这个:

reader.ReadStartElement("item")

reader.ReadStartElement("key")
Dim key As String = reader.ReadString()
我得到了正确的密钥,但是进入了一个字符串对象。当我尝试像这样添加密钥/值对时:

<item>
    <key>my_first_key</key>
    <value>my_first_value</value>
</item>
<item>
    <key>my_second_key</key>
    <value>my_second_value</value>
</item>
writer.WriteStartElement("item")
writer.WriteElementString("key", key.ToString)   
writer.WriteElementString("value", value.ToString)  
Me.Add(key, value)
它不工作,因为key是字符串而不是TKey类型。您知道如何“强制转换”或将字符串转换为TKey吗?或者将键/值作为字符串封装到TKey/Tvalue类型中


提前多谢

您的需求似乎非常关注字符串,而建议的代码是通用的。但是,您可能会遇到这种特殊情况,即

reader.ReadStartElement("key");
if(typeof(TKey) == typeof(string)) {
    TKey key = (TKey)(object)reader.ReadString();
} else {           
    TKey key = (TKey)keySerializer.Deserialize(reader);
}
reader.ReadEndElement();
(价值也是如此)

以及:

(价值与此类似)


未经测试-但应该完成这项工作。

您的需求似乎非常关注字符串,而建议的代码是通用的。但是,您可能会遇到这种特殊情况,即

reader.ReadStartElement("key");
if(typeof(TKey) == typeof(string)) {
    TKey key = (TKey)(object)reader.ReadString();
} else {           
    TKey key = (TKey)keySerializer.Deserialize(reader);
}
reader.ReadEndElement();
(价值也是如此)

以及:

(价值与此类似)


未经测试-但应该可以完成此任务。

非常感谢,这正是我搜索的内容!非常感谢,这正是我要找的!