【问题标题】:Design of Serializing classes序列化类的设计
【发布时间】:2013-01-28 18:03:56
【问题描述】:

我刚刚学会了如何在C# 中将serializedeserialize objects 转换为XML。 现在我想将此功能添加到我的应用程序中,我有一个class 用于object。我应该创建一个包含serializedeserialize 方法的class 吗?或者,应该有Interface 之类的吗?

这通常是怎么做的?

【问题讨论】:

标签: c# .net serialization xml-serialization


【解决方案1】:

您最好将您的对象和序列化机制分开DataContractSerializers 在.Net 中对此有好处。它们允许在属性上指定数据注释(如上面的评论中所述)并为您自动执行实际序列化。

【讨论】:

    【解决方案2】:

    有一个接口(ISerializable),但您也有通用类,它们可以为您完成这项工作。在这种情况下,您必须为要序列化的属性放置正确的属性。

    如果您想要有关此的文档,请查看 here

    .Net 有一些内置的序列化器(BinaryFormatter 和 XmlSerializer

    如果您使用接口,则必须编写自己的方法

    【讨论】:

      【解决方案3】:

      如果您的类足够简单,可以进行序列化,您可以这样做:

      using (FileStream stream = File.Create(filename)){
       XmlSerializer serializer = new XmlSerializer(typeof(MyRootClassHere));
       serializer .Serialize(stream, yourRootInstance);
      }
      

      您可能需要查看 XmlElement、XmlAttribute、XmlIgnore、XmlText 属性以更好地控制输出:

       [XmlIgnore]
       public bool IgnoredBool{ get; set; }
      
       [XmlAttribute("NewXmlName")]
       public string RenamedProperty{ get; set; }
      

      这应该可以让你大部分时间都去。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多