我们建立了一个框架,其API是:
T Deserialize<T>(string to deserialize)
{
// XmlSerializer(typeof(T))
// deserialize and return
}
我们一直在传递像:
这样的东西[XmlRoot("apple")]
public class Apple
{
[XmlElement("Id")]
public int AppleId { get; set; }
}
当我们返回一个苹果时,这很有效,但是,有时我们会得到“notAnApple”。所以我会得到“apple”或“notAnApple”。当我得到“notAnApple”时,我得到一个例外。
由于我们有很多围绕此方法构建的代码,我宁愿不去改变方法签名之类的东西。但是,我确实可以灵活地将任何我喜欢的类传递给这种反序列化方法。
答案 0 :(得分:0)
通常,您“确切地”知道您正在序列化和反序列化的内容。例如你可以像这样序列化:
serializer.Serialize(stream, new Apple());
serializer.Serialize(stream, new notAnApple());
然后你会序列化:
Apple apple = (Apple)deserialzer.Deserialize(stream);
notAnApple peach = (notAnApple)desserializer.Deserialize(stream);
您通常不会随机尝试反序列化数据以确定您要反序列化的内容。从技术上讲,您已经知道,因为您有特定的文件格式或特定的流格式。