在可用于派生类的基类中提供序列化服务

时间:2009-06-25 19:04:40

标签: c# serialization

我已经实现了一个数据访问库,允许开发人员用属性标记他们的派生类,以便将它们直接映射到存储过程。到现在为止还挺好。现在我想提供一个Serialize()方法或覆盖ToString(),并让派生类可以自由地序列化为XML。

我应该从哪里开始?我是否必须使用Reflection来做到这一点?

3 个答案:

答案 0 :(得分:2)

使用XmlSerializer进行XML序列化

在第一个实例中,我将查看.NET Framework中的XML Serialization,它支持使用XmlSerializer将对象与XML进行序列化。还有一篇来自Extreme XML on using this serialization framework的文章。

以下链接均提供了使用此方法的示例:

ISerializable和SerializableAttribute

另一种方法是使用格式化程序和常规SerializableAttributeISerializable序列化系统。但是,除SoapFormatter之外,此框架没有内置的XML格式化程序,因此您需要自己动手或查找第三方/开源实现。

自己动手

此外,您可以考虑编写自己的系统,例如使用反射来遍历对象树,根据序列化可见性序列化项目,这可以通过您自己的属性或现有的DesignerSerializationVisibility属性来指示。大多数实现所显示的缺点是它希望属性是公开读/写的,因此在评估现有的自定义解决方案时请记住这一点。

答案 1 :(得分:1)

我首先看一下XmlSerializer

希望你也能在那里结束,因为它已经为你提供了这个功能:)

答案 2 :(得分:1)

您应该能够使用XmlSerializer来执行类的序列化

XmlSerializer serializer = new XmlSerializer(this.GetType()); serializer.Serialize(stream,obj);