我正在通过 WCF 传递数据集和/或在会话管理器中对其进行序列化。反序列化对象后,数据从自定义列中消失。我可以在对象被序列化之前验证数据是否存在。自定义对象用于实现字母数字排序,它使用 [Serializable] 属性。数据集不是强类型的。
解决方案遵循...
我正在通过 WCF 传递数据集和/或在会话管理器中对其进行序列化。反序列化对象后,数据从自定义列中消失。我可以在对象被序列化之前验证数据是否存在。自定义对象用于实现字母数字排序,它使用 [Serializable] 属性。数据集不是强类型的。
解决方案遵循...
自定义数据类型可以在数据集中进行序列化,但它们需要实现 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);
}
传递数据集或数据表不是一个好习惯。因此,在数据集中迭代您的数据表并填充您将序列化的自定义类或类集合(不要忘记设置 datacontract 和 datamember 属性)