0

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

由于我们围绕这个方法构建了很多代码,我不希望四处更改方法签名之类的东西。但是,我确实可以完全灵活地将我喜欢的任何类传递给这个反序列化方法。

4

1 回答 1

0

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

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

然后你会像这样序列化:

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

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

于 2012-07-26T17:40:08.117 回答