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 に答える