C# XML序列化和C语言的问题#
我正在尝试将一些C#类序列化为XML。在我尝试引入一些继承类之前,一切都很顺利 这些类[根据大小进行编辑]C# XML序列化和C语言的问题#,c#,xml-serialization,C#,Xml Serialization,我正在尝试将一些C#类序列化为XML。在我尝试引入一些继承类之前,一切都很顺利 这些类[根据大小进行编辑] public class ParticipationClass { [XmlAttribute] public string typeCode; [XmlAttribute] public string contextControlCode; public ParticipationClass() { } } public c
public class ParticipationClass
{
[XmlAttribute]
public string typeCode;
[XmlAttribute]
public string contextControlCode;
public ParticipationClass()
{
}
}
public class p_recordTarget : ParticipationClass
{
public p_recordTarget()
{
typeCode = "RCT";
contextControlCode = "OP";
}
}
使用类时,使用以下代码:
public class Test
{
// other class attributes excluded..
[XmlElement]
public ParticipationClass recordTarget;
private void Test()
{
recordTarget = new p_recordTarget();
}
}
序列化失败,出现InvalidOperationException,查看我可以看到的异常详细信息“Message=”类型itk.cda.cdaclasses.p_recordTarget不是预期的。使用XmlInclude或SoapInclude属性指定静态未知的类型。”
因此,我想我需要一个XmlInclude,但我不确定如何使用。这可能会帮助您:
这可能会帮助您:
简而言之,您需要使用基类上的属性让序列化程序了解派生类:
[XmlInclude(typeof(p_recordTarget))]
public class ParticipationClass {
// ...
}
简而言之,您需要使用基类上的属性让序列化程序了解派生类:
[XmlInclude(typeof(p_recordTarget))]
public class ParticipationClass {
// ...
}
像这样:
[XmlInclude(typeof(p_recordTarget))]
public class ParticipationClass
{
[XmlAttribute]
public string typeCode;
[XmlAttribute]
public string contextControlCode;
public ParticipationClass()
{
}
}
像这样:
[XmlInclude(typeof(p_recordTarget))]
public class ParticipationClass
{
[XmlAttribute]
public string typeCode;
[XmlAttribute]
public string contextControlCode;
public ParticipationClass()
{
}
}
看,谢谢你的快速回答。我已经试过了,它似乎没有任何区别。看看西蒙的答案(这是相同的)和其他网络资源,我怀疑这应该是答案。但它仍然不起作用,并产生相同的例外。感谢您的快速回答。我已经尝试过这个,它似乎没有任何区别。看看西蒙的答案(这是相同的)和其他网络资源,我怀疑这应该是答案。但它仍然不起作用,并产生相同的例外。西蒙,看看我对乔恩(谁有相同的答案)的评论。我认为它应该可以工作,但似乎不行。我认为你也可以将它放在方法上,但我应该有同样的效果。或者这是一个缓存问题。序列化是缓存的(只要可能)。Simon,请参阅我对Jon的评论(他有相同的答案)。我认为它应该可以工作,但似乎不行。我认为您也可以将它放在方法上,但我应该有相同的效果。或者这是一个缓存问题。序列化是缓存的(只要可能)。