我已经实现了一个数据访问库,允许开发人员用属性标记他们的派生类,以便将它们直接映射到存储过程。到现在为止还挺好。现在我想提供一个Serialize()方法或覆盖ToString(),并让派生类可以自由地序列化为XML。
我应该从哪里开始?我是否必须使用Reflection来做到这一点?
答案 0 :(得分:2)
在第一个实例中,我将查看.NET Framework中的XML Serialization,它支持使用XmlSerializer
将对象与XML进行序列化。还有一篇来自Extreme XML on using this serialization framework的文章。
以下链接均提供了使用此方法的示例:
另一种方法是使用格式化程序和常规SerializableAttribute
和ISerializable
序列化系统。但是,除SoapFormatter
之外,此框架没有内置的XML格式化程序,因此您需要自己动手或查找第三方/开源实现。
此外,您可以考虑编写自己的系统,例如使用反射来遍历对象树,根据序列化可见性序列化项目,这可以通过您自己的属性或现有的DesignerSerializationVisibility
属性来指示。大多数实现所显示的缺点是它希望属性是公开读/写的,因此在评估现有的自定义解决方案时请记住这一点。
答案 1 :(得分:1)
我首先看一下XmlSerializer。
希望你也能在那里结束,因为它已经为你提供了这个功能:)
答案 2 :(得分:1)
您应该能够使用XmlSerializer来执行类的序列化
XmlSerializer serializer = new XmlSerializer(this.GetType()); serializer.Serialize(stream,obj);