序列化/反序列化具体类

时间:2014-11-07 17:20:27

标签: c# inheritance serialization

我希望将一堆共享某些部分的XML消息反序列化为从基类继承的具体类。

我有一个工厂方法,它根据xml内容创建具体类的实例:

public class MessageFactory
{
    static public Message Create(string xml)
    {
        Message mm = Message.Deserialize(xml);

        Message concreteMessage = null;
        switch (mm.MessageHeader.MessageTypeCode)
        {
            case "010":
                concreteMessage = MM010.Deserialize(xml);
                break;
            case "020":
                concreteMessage = MM020.Deserialize(xml);
                break;
        }

        return concreteMessage;
    }
}

其中Deserialize方法在Message基类中实现,如下所示:

    public static Message Deserialize(string xml)
    {
        System.IO.StringReader stringReader = null;
        try
        {
            stringReader = new System.IO.StringReader(xml);
            return ((Message)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
        }
        finally
        {
            if ((stringReader != null))
            {
                stringReader.Dispose();
            }
        }
    }

编辑:以前的方法不正确,已修复

显然这不起作用,因为Deserialize方法总是返回一个基类实例。 在基类中定义Deserialize(和Serialize)方法以便它实际返回具体类的实例的最佳方法是什么?

0 个答案:

没有答案