【问题标题】:Using [Serializable()] in code [duplicate]在代码中使用 [Serializable()] [重复]
【发布时间】:2012-10-20 03:02:03
【问题描述】:

可能重复:
When should i use [Serializable] in C#?

当我们处理序列化时,在类的开头(命名空间之后和类之前)使用 [Serializable()] 有什么重要性?

我正在查看如下示例:

namespace MyObjSerial
{
    [Serializable()]    //Set this attribute to all the classes that you define to be serialized
    public class Employee : ISerializable
    {
        public int EmpId;
        public string EmpName;

        //Default constructor
        public Employee()
        {
            EmpId = 0;
            EmpName = null;
        }
    }
}

【问题讨论】:

  • 这个问题有XML和XAML标签;它们与问题有什么关系?对于 XML,如果是因为您要序列化为 XML,请编辑您的问题以包含该事实(这会使问题与可能的重复问题不同)。对于 XAML,我无法想象它是如何应用的。

标签: c# xml


【解决方案1】:

二进制序列化[高度自动化]

制作类型Binary Serializable

的两种方法

{如果你想用 XML 序列化这不是你想要的}

实现ISerializable 让您可以完全控制序列化

使用serialzablenonSerialized 等属性和各种其他属性。 使用serialzable 属性指示序列化程序包含类型中的所有字段,包括private,publicbut notproperties`


XML 序列化[自动化程度较低]

我猜你想序列化XML中的类,在这种情况下

使类型XML Serializable

的两种方法

使用System.Xml.Serialization属性

实现IXmlSerializer 以获得更多控制


您的问题

在类的开头使用 [Serializable()] 是否重要 (在命名空间之后和类之前)当我们处理时 序列化

Ofcorse..这就是你要告诉编译器序列化那些特定类型的方式。但是你应该根据类应该序列化到什么来使用属性或接口。

因此,使用[Serializable()] 属性将类型序列化为XML 是行不通的。它用于二进制序列化。您应该在类上添加System.Xml.Serialization attributes 的属性或使用@ 987654333@ 用于 XML 序列化

你可以使用

1>Data Contract Serializer
2>Binary Serializer
3>Xml Serializer

【讨论】:

  • 次要学究点:“二进制序列化”是一个通用术语,包括一系列序列化程序。您的注释仅适用于 BinaryFormatter,它只是 一个 二进制序列化程序。
  • XML 序列化程序不使用[Serializable] 属性。
  • @JohnSaunders 我从来没有这么说过..我说System.Xml.Serialization attributes & IXmlSerializer
  • 您还说过,“Ofcorse..这就是您要告诉编译器序列化这些特定类型的方式。”
  • @JohnSaunders 啊...更正了..thx 指出来
猜你喜欢
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2015-07-01
  • 1970-01-01
  • 2011-08-30
  • 2013-07-28
  • 2018-07-20
相关资源
最近更新 更多