c# hashtable 序列化
时间: 2023-07-18 18:22:26 浏览: 112
C#序列化成XML注意细节
要将 C# 的 Hashtable 进行序列化,可以使用 .NET 中自带的 BinaryFormatter 类或者 Json.NET 库。
使用 BinaryFormatter 类进行序列化:
```csharp
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
Hashtable hashtable = new Hashtable();
// 在 hashtable 中添加一些键值对
BinaryFormatter formatter = new BinaryFormatter();
using (Stream stream = new FileStream("hashtable.bin", FileMode.Create, FileAccess.Write, FileShare.None))
{
formatter.Serialize(stream, hashtable);
}
```
使用 BinaryFormatter 类进行反序列化:
```csharp
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
Hashtable hashtable = null;
BinaryFormatter formatter = new BinaryFormatter();
using (Stream stream = new FileStream("hashtable.bin", FileMode.Open, FileAccess.Read, FileShare.Read))
{
hashtable = (Hashtable)formatter.Deserialize(stream);
}
```
使用 Json.NET 库进行序列化:
```csharp
using Newtonsoft.Json;
Hashtable hashtable = new Hashtable();
// 在 hashtable 中添加一些键值对
string json = JsonConvert.SerializeObject(hashtable, Formatting.Indented);
File.WriteAllText("hashtable.json", json);
```
使用 Json.NET 库进行反序列化:
```csharp
using Newtonsoft.Json;
Hashtable hashtable = null;
string json = File.ReadAllText("hashtable.json");
hashtable = JsonConvert.DeserializeObject<Hashtable>(json);
```
需要注意的是,如果 Hashtable 中的值类型是自定义类型,那么在反序列化时需要确保该类型已经被加载。另外,因为 Hashtable 是不支持序列化的,所以在序列化时需要将其转换为支持序列化的类型,比如 Dictionary。
阅读全文