我希望将一堆共享某些部分的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)方法以便它实际返回具体类的实例的最佳方法是什么?