1

可能重复:
我什么时候应该在 C# 中使用 [Serializable]?

当我们处理序列化时,在类的开头(命名空间之后和类之前)使用 [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;
        }
    }
}
4

1 回答 1

1

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

使类型Binary Serializable的两种方法

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

实施ISerializable使您可以完全控制序列化

或者

使用类似的属性serialzablenonSerialized以及各种其他属性。使用serialzable属性指示序列化程序包含类型中的所有字段,包括private,公共but not属性`


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

我猜你想XML在那种情况下序列化类

使XML 类型可序列化的两种方法

使用System.Xml.Serialization属性

或者

实施IXmlSerializer更多控制


你的问题

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

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

因此,使用[Serializable()]属性将类型序列化为XML行不通。它用于二进制序列化。您应该在类上撒上属性System.Xml.Serialization attributesIXmlSerializer用于XML 序列化

您可以使用

1>Data Contract Serializer
2>Binary Serializer
3>Xml Serializer
于 2012-10-30T17:54:18.770 回答