Dictionary序列化也报错
时间: 2023-07-18 19:22:27 浏览: 140
如果您使用的是 BinaryFormatter 进行序列化,那么 Dictionary 序列化时如果值类型是自定义类型,需要确保该类型已经被加载。如果该类型还没有被加载,那么在反序列化时会抛出 SerializationException 异常。
如果您使用的是 Json.NET 库进行序列化,那么通常情况下不需要额外处理,因为该库会自动处理类型的加载。如果还是遇到了问题,可以尝试在序列化时指定 TypeNameHandling 属性,比如:
```csharp
using Newtonsoft.Json;
Dictionary<string, CustomType> dictionary = new Dictionary<string, CustomType>();
// 在 dictionary 中添加一些键值对
string json = JsonConvert.SerializeObject(dictionary, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
File.WriteAllText("dictionary.json", json);
```
在反序列化时,也需要将 TypeNameHandling 属性设置为 All,比如:
```csharp
using Newtonsoft.Json;
Dictionary<string, CustomType> dictionary = null;
string json = File.ReadAllText("dictionary.json");
dictionary = JsonConvert.DeserializeObject<Dictionary<string, CustomType>>(json, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
```
如果还有其他问题,请告诉我具体的报错信息,我会尽力帮助您解决问题。
阅读全文