当我运行时:
public List<Animal> LoadFromFile()
{
// DECLARING ITEMS FOR FILE MANIPULATION
fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
bf = new BinaryFormatter();
List<Animal> tempList = new List<Animal>();
// DE-SERIALIZING
while (fs.Position < fs.Length)
{
Animal p = (Animal)bf.Deserialize(fs);
tempList.Add(p);
}
return tempList;
}
我得到System.InvalidCastException类型的异常,说:
无法将类型为'System.Collections.Generic.List`1 [AnimalShelterManager.Animal]'的对象强制转换为'AnimalShelterManager.Animal'。
这是什么意思?括号之间的内容实际上是我希望它在反序列化时强制转换的类型。包含列表和Animal类的类以及从中继承的 所有[Serializable]
。
答案 0 :(得分:1)
错误:
无法投射类型的对象 'System.Collections.Generic.List`1 [AnimalShelterManager.Animal]'到 输入'AnimalShelterManager.Animal'。
说的一切。您正在将Animal
的列表转换为Animal
,您的反序列化将返回一个项目列表,其中可能包含一个Animal
元素。调试代码并确保这一点并使用FirstOrDefault()
在转换之前获取第一个元素。