C# 序列化数据集释放列中的自定义数据类型
我通过WCF传递数据集和/或在会话管理器中序列化它。 反序列化对象后,数据将从自定义列中消失。我可以在序列化对象之前验证数据是否存在。自定义对象用于实现字母数字排序,并使用[Serializable]属性。数据集不是强类型的C# 序列化数据集释放列中的自定义数据类型,c#,serialization,dataset,C#,Serialization,Dataset,我通过WCF传递数据集和/或在会话管理器中序列化它。 反序列化对象后,数据将从自定义列中消失。我可以在序列化对象之前验证数据是否存在。自定义对象用于实现字母数字排序,并使用[Serializable]属性。数据集不是强类型的 要遵循的解决方案…可以在数据集中序列化自定义数据类型,但它们需要实现IXmlSerializable接口 using System; using System.Text; using System.Xml; using System.Xml.Schema; using Sy
要遵循的解决方案…可以在数据集中序列化自定义数据类型,但它们需要实现IXmlSerializable接口
using System;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
[Serializable]
public class AlphaNumericSort : IComparable, IXmlSerializable
{
...
// Xml Serialization Infrastructure
public void WriteXml (XmlWriter writer)
{
writer.WriteString(_Value);
}
public void ReadXml (XmlReader reader)
{
_Value = reader.ReadString();
}
public XmlSchema GetSchema()
{
return(null);
}
传递dataset或datatable不是一种好的做法。
因此,在dataset中的datatable上迭代并填充要序列化的自定义类或类集合(不要忘记设置datacontract和datamember属性)
[Serializable]
被XML序列化程序忽略。一般来说,通过web服务传递dataset
或其他.NET特定类型是个坏主意。只有当另一方总是运行兼容版本的.NET时,这才有意义。我意识到这不是最佳实践,但有时你必须充分利用你所拥有的。这也适用于与会话状态服务器一起使用的数据集。我很好奇,当一个完全可服务的容器已经存在时,为什么引入自己的容器来传递数据是一个好的做法?