C# 序列化一个对象及其中的对象列表

xml

1个回答

写回答

李玉婷

2025-07-06 02:05

+ 关注

XML
XML

使用C#语言进行对象序列化是一种非常常见的操作。在某些情况下,我们可能需要将一个对象及其包含的对象列表一起序列化。本文将介绍如何使用C#语言进行对象序列化,并提供相应的示例代码。

对象序列化的概念

在开始之前,我们先来了解一下对象序列化的概念。对象序列化是指将一个对象转换为字节流的过程,以便将其存储在磁盘或通过网络传输。序列化后的对象可以在需要时进行反序列化,恢复为原始的对象。

使用C#进行对象序列化

C#提供了一个方便的方式来进行对象序列化,即使用System.Runtime.Serialization命名空间中的DataContractSerializer类。这个类可以将一个对象及其包含的对象列表进行序列化和反序列化。

下面是一个简单的示例,演示了如何使用C#进行对象序列化:

csharp

using System;

using System.Collections.Generic;

using System.IO;

using System.Runtime.Serialization;

using System.XML;

namespace ObjectSerializationExample

{

[DataContract]

public class Person

{

[DataMember]

public string Name { get; set; }

[DataMember]

public int Age { get; set; }

}

[DataContract]

public class Company

{

[DataMember]

public string Name { get; set; }

[DataMember]

public List<Person> Employees { get; set; }

}

class Program

{

static void MAIn(string[] args)

{

// 创建一个包含对象列表的对象

var company = new Company

{

Name = "ABC Company",

Employees = new List<Person>

{

new Person { Name = "Alice", Age = 25 },

new Person { Name = "Bob", Age = 30 },

new Person { Name = "Charlie", Age = 35 }

}

};

// 创建一个DataContractSerializer对象

var serializer = new DataContractSerializer(typeof(Company));

// 创建一个文件流来保存序列化后的数据

using (var stream = new FileStream("company.XML", FileMode.Create))

{

// 使用XMLWriter来写入数据

using (var writer = XMLWriter.Create(stream))

{

// 序列化对象

serializer.WriteObject(writer, company);

}

}

Console.WriteLine("对象序列化完成!");

}

}

}

在上面的示例中,我们定义了两个类Person和Company。Company类包含一个名为Employees的属性,该属性是一个Person对象的列表。我们通过创建一个包含对象列表的Company对象,并使用DataContractSerializer类进行序列化。最后,我们将序列化后的数据保存到一个XML文件中。

使用C#进行对象反序列化

除了对象序列化,C#还提供了对象反序列化的功能,即将序列化后的数据恢复为原始的对象。下面是一个简单的示例,演示了如何使用C#进行对象反序列化:

csharp

using System;

using System.IO;

using System.Runtime.Serialization;

using System.XML;

namespace ObjectSerializationExample

{

// 省略了Person和Company类的定义

class Program

{

static void MAIn(string[] args)

{

// 创建一个DataContractSerializer对象

var serializer = new DataContractSerializer(typeof(Company));

// 创建一个文件流来读取序列化后的数据

using (var stream = new FileStream("company.XML", FileMode.Open))

{

// 使用XMLReader来读取数据

using (var reader = XMLReader.Create(stream))

{

// 反序列化对象

var company = (Company)serializer.ReadObject(reader);

// 输出反序列化后的数据

Console.WriteLine("公司名称:{0}", company.Name);

Console.WriteLine("员工列表:");

foreach (var employee in company.Employees)

{

Console.WriteLine("姓名:{0},年龄:{1}", employee.Name, employee.Age);

}

}

}

Console.WriteLine("对象反序列化完成!");

}

}

}

在上面的示例中,我们使用DataContractSerializer类从XML文件中读取序列化后的数据,并将其反序列化为Company对象。然后,我们输出反序列化后的数据,验证反序列化是否成功。

本文介绍了如何使用C#进行对象序列化及反序列化。通过使用DataContractSerializer类,我们可以方便地将一个对象及其包含的对象列表进行序列化和反序列化。这在许多应用程序中都是非常有用的,例如将对象存储在数据库中或通过网络传输。

希望本文对您理解C#对象序列化有所帮助!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号