XML Serializable Generic Dictionary

摘要:
.net2.0泛型Dictionary不支持XMLserializable.下面是一个实现IXmlSerializable接口实现支持Serialize的泛型集合.Dictionary。Dictionary本身实现了ISerializable接口,WebService中无法实现序列化,具体是什么原因它不支持XML序列化。
.net 2.0 泛型Dictionary不支持 XML serializable. 下面是一个实现IXmlSerializable 接口实现支持Serialize的泛型集合.Dictionary。 Dictionary<TKey, TValue>本身实现了ISerializable接口,WebService中无法实现序列化,具体是什么原因它不支持XML序列化。

1XML Serializable Generic Dictionary第1张XML Serializable Generic Dictionary第2张/**////<summary>2XML Serializable Generic Dictionary第3张///支持XML序列化的泛型Dictionary
3XML Serializable Generic Dictionary第3张///</summary>4XML Serializable Generic Dictionary第3张///<typeparamname="TKey"></typeparam>5XML Serializable Generic Dictionary第6张///<typeparamname="TValue"></typeparam>

6XML Serializable Generic Dictionary第7张[XmlRoot("dictionary")]
7XML Serializable Generic Dictionary第7张publicclassSerializableDictionary<TKey,TValue>8XML Serializable Generic Dictionary第7张:Dictionary<TKey,TValue>,IXmlSerializable
9XML Serializable Generic Dictionary第1张XML Serializable Generic Dictionary第2张XML Serializable Generic Dictionary第12张{
10XML Serializable Generic Dictionary第3张

#region 构造函数

public SerializableDictionary():base()
{

}
public SerializableDictionary(IDictionary<TKey, TValue> dictionary):base(dictionary)
{

}
public SerializableDictionary(IEqualityComparer<TKey> comparer):base(comparer)
{
}


public SerializableDictionary(int capacity):base(capacity)
{

}
public SerializableDictionary(int capacity, IEqualityComparer<TKey> comparer)
:base(capacity,comparer)
{

}

protected SerializableDictionary(SerializationInfo info, StreamingContext context):base(info,context)
{

}

#endregion
11XML Serializable Generic Dictionary第14张XML Serializable Generic Dictionary第15张IXmlSerializableMembers#regionIXmlSerializableMembers12XML Serializable Generic Dictionary第3张publicSystem.Xml.Schema.XmlSchemaGetSchema()
13XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张XML Serializable Generic Dictionary第12张{
14XML Serializable Generic Dictionary第3张returnnull;
15XML Serializable Generic Dictionary第21张}
16XML Serializable Generic Dictionary第3张
17XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张/**////<summary>18XML Serializable Generic Dictionary第3张///从对象的XML表示形式生成该对象
19XML Serializable Generic Dictionary第3张///</summary>20XML Serializable Generic Dictionary第21张///<paramname="reader"></param>

21XML Serializable Generic Dictionary第3张publicvoidReadXml(System.Xml.XmlReaderreader)
22XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张XML Serializable Generic Dictionary第12张{
23XML Serializable Generic Dictionary第3张
24XML Serializable Generic Dictionary第3张XmlSerializerkeySerializer=newXmlSerializer(typeof(TKey));
25XML Serializable Generic Dictionary第3张XmlSerializervalueSerializer=newXmlSerializer(typeof(TValue));
26XML Serializable Generic Dictionary第3张boolwasEmpty=reader.IsEmptyElement;
27XML Serializable Generic Dictionary第3张reader.Read();
28XML Serializable Generic Dictionary第3张
29XML Serializable Generic Dictionary第3张if(wasEmpty)
30XML Serializable Generic Dictionary第3张return;
31XML Serializable Generic Dictionary第3张while(reader.NodeType!=System.Xml.XmlNodeType.EndElement)
32XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张XML Serializable Generic Dictionary第12张{
33XML Serializable Generic Dictionary第3张reader.ReadStartElement("item");
34XML Serializable Generic Dictionary第3张reader.ReadStartElement("key");
35XML Serializable Generic Dictionary第3张TKeykey=(TKey)keySerializer.Deserialize(reader);
36XML Serializable Generic Dictionary第3张reader.ReadEndElement();
37XML Serializable Generic Dictionary第3张reader.ReadStartElement("value");
38XML Serializable Generic Dictionary第3张TValuevalue=(TValue)valueSerializer.Deserialize(reader);
39XML Serializable Generic Dictionary第3张reader.ReadEndElement();
40XML Serializable Generic Dictionary第3张this.Add(key,value);
41XML Serializable Generic Dictionary第3张reader.ReadEndElement();
42XML Serializable Generic Dictionary第3张reader.MoveToContent();
43XML Serializable Generic Dictionary第3张
44XML Serializable Generic Dictionary第21张}
45XML Serializable Generic Dictionary第3张reader.ReadEndElement();
46XML Serializable Generic Dictionary第3张
47XML Serializable Generic Dictionary第21张}
48XML Serializable Generic Dictionary第3张
49XML Serializable Generic Dictionary第3张
50XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张/**////<summary>51XML Serializable Generic Dictionary第3张///将对象转换为其XML表示形式
52XML Serializable Generic Dictionary第3张///</summary>53XML Serializable Generic Dictionary第21张///<paramname="writer"></param>

54XML Serializable Generic Dictionary第3张publicvoidWriteXml(System.Xml.XmlWriterwriter)
55XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张XML Serializable Generic Dictionary第12张{
56XML Serializable Generic Dictionary第3张
57XML Serializable Generic Dictionary第3张XmlSerializerkeySerializer=newXmlSerializer(typeof(TKey));
58XML Serializable Generic Dictionary第3张XmlSerializervalueSerializer=newXmlSerializer(typeof(TValue));
59XML Serializable Generic Dictionary第3张foreach(TKeykeyinthis.Keys)
60XML Serializable Generic Dictionary第17张XML Serializable Generic Dictionary第18张XML Serializable Generic Dictionary第12张{
61XML Serializable Generic Dictionary第3张writer.WriteStartElement("item");
62XML Serializable Generic Dictionary第3张writer.WriteStartElement("key");
63XML Serializable Generic Dictionary第3张keySerializer.Serialize(writer,key);
64XML Serializable Generic Dictionary第3张writer.WriteEndElement();
65XML Serializable Generic Dictionary第3张writer.WriteStartElement("value");
66XML Serializable Generic Dictionary第3张TValuevalue=this[key];
67XML Serializable Generic Dictionary第3张valueSerializer.Serialize(writer,value);
68XML Serializable Generic Dictionary第3张writer.WriteEndElement();
69XML Serializable Generic Dictionary第3张writer.WriteEndElement();
70XML Serializable Generic Dictionary第21张}
71XML Serializable Generic Dictionary第3张
72XML Serializable Generic Dictionary第21张}
73XML Serializable Generic Dictionary第3张
74XML Serializable Generic Dictionary第21张#endregion
75XML Serializable Generic Dictionary第3张
76XML Serializable Generic Dictionary第6张}

免责声明:文章转载自《XML Serializable Generic Dictionary》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WCF:调用方未由服务器进行身份验证SSH2连接原理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

配置之XML--读取XML文件 转存为Key-Value

将XML文件读取 绑定数据至Dictionary Eg: Xml文件 <?xml version="1.0" encoding="utf-8" ?> <LanguageConfig> <Chinese></Chinese> <English>002</English> &...

如何获取项目中XML的路径

问题描述:如果我这个程序要打包,要求安装包里就只有这个XML文件和EXE文件,用户安装后这两个文件会在同一个文件夹中.但此时程序运行后就找不到这个XML文件,请问应该怎么解决这个矛盾?(不准把XML文件拷贝到debug文件夹下) 设置XML文件的属性,复制到输出目录 如下图所示: 其他关于路径的一些读取方法: 1、取得控制台应用程序的根目录方法方法1、E...

Android内核开发:理解和掌握repo工具【转】

本文转载自:http://ticktick.blog.51cto.com/823160/1653304 由于Android源码是用repo工具来管理的,因此,搞Android内核开发,首先要搞清楚repo是什么东西,它该怎么使用?作为《Android内核开发》系列文章的第二篇,我们首先谈谈对repo工具的理解和使用。 1. repo是什么? repo是一种...

JAX-WS HandlerChain使用详解

JAX-WS的Handler和Servlet的Filter相似,可以对所有WebServicer进行拦截,在Handler中可以记录日志、权限控制、对请求的SOAP消息进行加密,解密等。JAX-WS提供两个Handler接口,LogicalHandler和SOAPHandler。LogicalHandler处理的是Message Payload,只能够访...

不定字段数目的数据库表设计和数据结构

不定字段数目的数据库表设计和数据结构 可能采用四种技术: 动态增加数据库表字段 预留足够的空白字段,运行时作动态影射 用xml格式保存在单字段里 改列为行,用另外一个表存放定制字段 现在我们来分析一下四种技术的优劣,不过首先可以排除的是第一点动态增加字段的方法,因为在实际操作时候几乎是不可能的(sqlserver太慢,oracle索性不支持)...

Jaxb处理泛型,转化成xml字符串

前言:   最近的工作内容跟银行有些交互, 对方提供的数据格式采用xml(不是预期的json/protobuf). 为了开发方便, 需要借助jaxb来实现xml和java对象之间的映射. 它还是有点像jackson, 通过简单的注解配置, 就能轻松实现json和java对象的互转. 不过笔者在java类中引入泛型时, 还是踩了不少jaxb的坑, 这边做下笔...