如何在反序列化时正确测试数据类型



我试图将一些Animal类型的对象反序列化到列表中。然而,我似乎不知道如何检查反序列化的对象实际上是一只动物。代码示例就是我所拥有的。然而,在将对象添加到动物类型列表之前,我将其投射到动物。所以我错过了中间的一步。

提前谢谢。

public void Load(String fileName)
{
if(fileName == null)
{
throw new ArgumentNullException("fileName");
}
String path = @"C:" + fileName;
if (fileName.Contains(@""))
{
path = fileName;
}
using (FileStream fileStream = File.OpenRead(path))
{
BinaryFormatter format = new BinaryFormatter();

Animals = (List<Animal>)format.Deserialize(fileStream);
}
}

您可以使用GetType()typeof(T):检查类型

public void Load(String fileName)
{
if (fileName == null)
{
throw new ArgumentNullException("fileName");
}
String path = @"C:" + fileName;
if (fileName.Contains(@""))
{
path = fileName;
}
using (FileStream fileStream = File.OpenRead(path))
{
BinaryFormatter format = new BinaryFormatter();

object obj = format.Deserialize(fileStream);
if (obj.GetType() == typeof(List<Animal>))
{
List<Animal> Animals = (List<Animal>)format.Deserialize(fileStream);
}               
}
}

最新更新