C# 面试题 目录

C# 中 DataContractSerializer 的用法

推荐答案

-- -------------------- ---- -------
----- -------
----- ----------
----- -----------------------------

--------------
------ ----- ------
-
    ------------
    ------ ------ ---- - ---- ---- -

    ------------
    ------ --- --- - ---- ---- -
-

------ ----- -------
-
    ------ ------ ---- ------
    -
        ------ ------ - --- ------ - ---- - ----- ----- --- - -- --

        -- --------- --- ------ -- - ------
        ---------------------- ---------- - --- ---------------------------------------
        ----- ----------- ------ - --- ------------------------ -----------------
        -
            ------------------------------ --------
        -

        -- ----------- --- ------ ---- --- ------
        ------ -------------------
        ----- ----------- ------ - --- ------------------------ ---------------
        -
            ------------------ - --------------------------------------
        -

        ------------------------- -------------------------- ---- ---------------------------
    -
-

本题详细解读

DataContractSerializer 概述

DataContractSerializer 是 .NET 中用于序列化和反序列化对象的类。它主要用于将对象转换为 XML 格式,以便存储或传输,并且可以从 XML 格式中重新构造对象。

使用步骤

  1. 定义数据契约:使用 [DataContract][DataMember] 属性标记类和成员。[DataContract] 用于标记类,[DataMember] 用于标记需要序列化的属性或字段。

  2. 创建对象:实例化一个需要序列化的对象。

  3. 序列化对象

    • 创建 DataContractSerializer 实例,指定要序列化的对象类型。
    • 使用 WriteObject 方法将对象序列化到流中(如文件流、内存流等)。
  4. 反序列化对象

    • 使用 ReadObject 方法从流中读取 XML 数据并反序列化为对象。

代码解析

  • Person 类:这是一个简单的类,包含两个属性 NameAge,并使用 [DataContract][DataMember] 标记。
  • 序列化:将 Person 对象序列化为 XML 并保存到文件 person.xml 中。
  • 反序列化:从 person.xml 文件中读取 XML 数据并反序列化为 Person 对象。
  • 输出:打印反序列化后的对象属性,验证序列化和反序列化的正确性。

注意事项

  • DataContractSerializer 默认使用 XML 格式,但也可以通过配置使用其他格式。
  • 只有标记了 [DataMember] 的成员才会被序列化。
  • 序列化和反序列化的类型必须一致,否则会抛出异常。
纠错
反馈