对象到 XML 之间的 C# 序列化



这是我第一次尝试序列化XML,我需要了解为什么我的代码中会出现错误:

private void function(Object2 InputParameters)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer s = new XmlSerializer(typeof(Object1));
StringWriter XMLWriter = new StringWriter();
s.Serialize(XMLWriter, InputParameters, ns);
XmlDocument DOC_Xml = new XmlDocument();
DOC_Xml.LoadXml(XMLWriter.ToString());
}

内部异常:

{"类型为"SRV.Entities.Object2"不能转换为类型"SRV"。Entities.Object1'."}

堆栈跟踪:

"   in System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)rn   in System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)rn "

错误线在s.Serialize(XMLWriter, ParametrosEntrada, ns);但我不明白原因。 如何解决不同对象之间的序列化问题? 谢谢你们,伙计们。

你有一个错误

private void function(Object2 InputParameters)

XmlSerializer s = new XmlSerializer(typeof(Object1));

你需要

XmlSerializer s = new XmlSerializer(typeof(Object2));

另外,您需要始终将"Object2"作为输入参数和"typeof"的参数。

更深入地说,您可以考虑泛型。 所以你可以传递类型是....根据需要. 对象 1 或对象 2。 (但不能两者兼而有之(

private void MyFunction<T>(T InputParameters)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer s = new XmlSerializer(typeof(T));
StringWriter XMLWriter = new StringWriter();
s.Serialize(XMLWriter, InputParameters, ns);
XmlDocument DOC_Xml = new XmlDocument();
DOC_Xml.LoadXml(XMLWriter.ToString());
}

您可以在此 SOF 答案中看到更多信息:

将泛型与 XmlSerializer 一起使用

最新更新