C# 序列化和反序列化EventArgs
时间: 2024-08-14 18:01:35 浏览: 54
在C#中,序列化和反序列化是将对象转换成可以存储、传输或持久化的数据形式的过程。`EventArgs`是一个基础的.NET事件参数类型,用于表示传递给事件处理程序的数据。当需要保存到文件或其他持久介质,或者在网络通信中发送时,我们可能会对其进行序列化。
**序列化** `EventArgs`:
- `EventArgs`类本身并不直接支持序列化,因为它没有提供序列化所需的数据字段。如果你有一个自定义的派生类(如`MyEventArgs`),并且这个类有公共属性,可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`或`System.IO.StreamWriter`等工具对它进行序列化,通常会把关键属性序列化到字节流或文本文件中。
```csharp
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream())
{
MyEventArgs myArgs = new MyEventArgs();
// 设置属性...
formatter.Serialize(stream, myArgs);
byte[] serializedBytes = stream.ToArray(); // 序列化的byte数组
}
```
**反序列化** `EventArgs`:
- 反序列化就是从字节流或其他存储中恢复回原始的对象实例。同样,如果使用`BinaryFormatter`,你可以这样做:
```csharp
using (MemoryStream stream = new MemoryStream(serializedBytes))
{
MyEventArgs deserializedArgs = (MyEventArgs)formatter.Deserialize(stream);
// 现在可以访问deserializedArgs的属性
}
```
阅读全文