.NET反序列化 - 返回多种类型

时间:2012-07-26 17:31:43

标签: c# .net silverlight serialization

我们建立了一个框架,其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”时,我得到一个例外。

由于我们有很多围绕此方法构建的代码,我宁愿不去改变方法签名之类的东西。但是,我确实可以灵活地将任何我喜欢的类传递给这种反序列化方法。

1 个答案:

答案 0 :(得分:0)

通常,您“确切地”知道您正在序列化和反序列化的内容。例如你可以像这样序列化:

serializer.Serialize(stream, new Apple());
serializer.Serialize(stream, new notAnApple());

然后你会序列化:

Apple apple = (Apple)deserialzer.Deserialize(stream);
notAnApple peach = (notAnApple)desserializer.Deserialize(stream);

您通常不会随机尝试反序列化数据以确定您要反序列化的内容。从技术上讲,您已经知道,因为您有特定的文件格式或特定的流格式。