我正在尝试解析具有各种不同响应类型的xml字符串集。我为每个响应创建了不同的名称空间,并定义了类以反序列化xml字符串。
namespace MyManager.ResponseA
{
public class Envelope
{
...
// some children for A
...
}
}
和
namespace MyManager.ResponseB
{
public class Envelope
{
...
// some different children for B
...
}
}
,依此类推。我这样做的原因是我有多个不同的响应,但是所有响应都始于周围的信封,我将其用作xml解析的源。子对象却有所不同。
说我想为这些类编写一个反序列化器。有没有一种方法可以将名称空间用作通用类型或完成其他操作?
这是我的意图,但是显然这是行不通的。我想将我的命名空间用作通用类型T:
public T Deserialize<T>(string key)
{
T.Envelope envelope = null;
StringReader stringReader = null;
XmlSerializer xmlSerializer = null;
XmlTextReader xmlTextReader = null;
try
{
stringReader = new StringReader(response);
xmlSerializer = new XmlSerializer(typeof(T.Envelope));
xmlTextReader = new XmlTextReader(stringReader);
envelope = (T.Envelope)xmlSerializer.Deserialize(xmlTextReader);
}
catch (Exception exp)
{
Console.Write(exp.ToString());
}
finally
{
if (xmlTextReader != null)
{
xmlTextReader.Close();
}
if (stringReader != null)
{
stringReader.Close();
}
}
return T;
}
所以我的问题是:如何通过定义适当的名称空间来查找此成员?我的整个架构有缺陷吗? (我认同) 解析可预测但形状不同的xml文件的适当做法是什么?预先谢谢你。