这是我第一次尝试序列化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 一起使用