下面是一个实现IXmlSerializable 接口实现支持Serialize的泛型集合.Dictionary 。 dictionary")] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable StreamingContext context):base(info,context) { } #endregion #region IXmlSerializable
", Namespace = "http://schemas.xmlsoap.org/ws/2004/09/mex")] 2: public class MetadataReference : IXmlSerializable Metadata", Namespace="http://schemas.xmlsoap.org/ws/2004/09/mex")] 2: public class MetadataSet : IXmlSerializable mex")] 11: public Collection<MetadataSection> MetadataSections { get; } 12: 13: XmlSchema IXmlSerializable.GetSchema (); 14: void IXmlSerializable.ReadXml(XmlReader reader); 15: void IXmlSerializable.WriteXml
要序列化dictionary对象,首先需要创建一个自定义dictionary类,实现IXmlSerializable接口。 LanguageSettings<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable
这种解决方法适用于一些小型的、结构变化性大的对象,如下:
///
另外,支持实现IXmlSerializable接口的类型,包括相关的XmlSchemaProviderAttribute属性、XDocument和XElement类型。 ADO.NET DataTable类型和DataSet类型(以及其类型化的派生类)都实现IXmlSerializable接口,因此可归入此类别。
并处理数据类型到消息正文的序列化和从消息正文进行反序列化,数据类型一旦序列化,您就无需在设计操作时考虑基础消息交换基础结构 可以使用其他序列化机制,标准Iserializable,SerializableAttribute和IXmlSerializable
考虑实现IXmlSerializable接口——如果应用XML序列化修饰属性后生成的XML内容还不能满足需要 5) 对运行时序列化的支持 参见: 考虑让类型支持运行时序列化——如果需要跨越.NETRemoting
XmlInclude]) 比如:IDictionary(如HashTable);父类对象赋予子类对象值的情况;对象间循环引用; (9)对于无法XML序列化的对象,可考虑: 1、使用自定义xml序列化(实现IXmlSerializable