C# 中实现泛型对象与字节数组互转

阿麦
阿麦
发布时间:2026-10-14| 6人浏览过
原创

本文展示了在 C# 中利用 BinaryFormatter 将任意泛型对象序列化为字节数组,以及从字节数组反序列化为对象的具体实现方法。通过引入 System.IO 和 System.Runtime.Serialization.Formatters.Binary 命名空间,结合 MemoryStream 可在内存中高效完成数据转换。

准备环境

在进行对象序列化操作前,需要确保项目中已引用以下核心命名空间,它们分别用于流处理和二进制格式化:

  • System.IO:提供对数据流和文件系统进行支持的基本类。
  • System.Runtime.Serialization.Formatters.Binary:包含用于二进制序列化的类。

同时,参与序列化的目标类必须标记为 [Serializable],且所有属性也必须是可序列化的类型。

第1步:实现泛型序列化方法

此步骤旨在将传入的任意类型对象(T)转换为 byte[] 字节数组,以便进行后续存储或网络传输。

操作入口:自定义类的公共方法区。

具体动作:

  1. 创建 MemoryStream 实例作为内存中的写入缓冲区。
  2. 实例化 BinaryFormatter 对象以处理格式控制。
  3. 调用 bFormatter.Serialize 方法,将对象 t 写入流中。
  4. 返回内存流的字节缓冲区。
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

// 假设该方法位于某个类内部
protected byte[] Serialize<T>(T t)
{
    MemoryStream mStream = new MemoryStream();
    BinaryFormatter bFormatter = new BinaryFormatter();
    bFormatter.Serialize(mStream, t);
    return mStream.GetBuffer();
}

第2步:实现泛型反序列化方法

此步骤接收之前生成的字节数组,并将其还原为原始的泛型对象 T。

操作入口:自定义类的公共方法区。

具体动作:

  1. 根据输入的字节数组 b 创建一个新的 MemoryStream。
  2. 实例化 BinaryFormatter 对象。
  3. 调用 Deserialize 方法读取流数据,并将结果强制转换为类型 T。
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

protected T Deserialize<T>(byte[] b)
{
    BinaryFormatter bFormatter = new BinaryFormatter();
    return (T)bFormatter.Deserialize(new MemoryStream(b));
}

注意事项与排错

在使用上述方法时,需注意以下关键点以确保操作的稳定性:

  • 类标记要求:所有要被序列化的实体类都必须添加 [Serializable] 特性,否则在序列化时会抛出异常。
  • 版本兼容性:BinaryFormatter 在某些新版本的 .NET 环境中可能存在安全限制或已过时的警告。若遇到兼容性错误,建议考虑使用 System.Text.Json 或 Newtonsoft.Json 等现代序列化库,或者升级/降级对应的 .NET Framework/Core 版本至兼容状态。
  • 空指针处理:反序列化时若传入空数组 null 或长度不足的数组,程序可能崩溃。建议在实际应用中加入非空判断。

简要总结

以上就是 C# 泛型序列化对象为字节数组的详细内容,更多关于 C# 序列化与反序列化技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。