【发布时间】:2016-01-06 16:53:29
【问题描述】:
我正在使用二进制格式化程序来保存/加载文件中的数据。我有一个图书馆系统,有两个具体的类 - Users 和 Items - 和一个 abstract 类 - 图书馆。我也在使用两个列表:
List<Item> items = new List<Item>();
List<User> users = new List<User>();
public static void Serialize(object value, string path)
{
BinaryFormatter formatter = new BinaryFormatter();
using (Stream fStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None))
{
formatter.Serialize(fStream, value);
}
}
public static object Deserialize(string path)
{
if (!System.IO.File.Exists(path)) { throw new NotImplementedException(); }
BinaryFormatter formatter = new BinaryFormatter();
using (Stream fStream = File.OpenRead(path))
{
return formatter.Deserialize(fStream);
}
}
}
以上是我用来保存和加载的两种方法。
为了从程序文件中调用它们,我使用以下代码进行保存:
string pathItem1 = @"itemList";
string pathUser1 = @"userList";
Library.Serialize(Library.myItems, pathItem1);
Library.Serialize(Library.myUsers, pathUser1);
Console.WriteLine("Serializing...");
这个加载代码:
string pathItem = @"itemList";
string pathUser = @"userList";
//var deserializedItem
List<Item> items= (List<Item>)Library.Deserialize(pathItem);
//var deserializedUser =
List<User> users = (List<User>)Library.Deserialize(pathUser);
Console.WriteLine("Deserializing...");
保存似乎工作正常。然而加载不是。我收到此错误消息:
附加信息:无法转换类型为“System.Collections.Generic.List
1[LibrarySystem.User]' to type 'System.Collections.Generic.List1[LibrarySystem.Item]”的对象。
谢谢!
【问题讨论】:
标签: c# serialization deserialization binaryformatter