我使用了Visual Studio的将XML粘贴为类,这似乎可以正常工作,但是在文件中击中xsi:type属性时出现错误。
经过一堆搜索,我发现这是将XML粘贴为类的常见问题,因为它不能处理多态子类型。我还发现,可以通过向具有xsi:type的类中添加XML include并为该类型创建派生类来解决此问题。因此,如果我的XML在其中一个元素中具有xsi:type =“ urn:CD”,则可以将[XMLInclude(typeof(CD))]添加到适当的类中,并创建一个从元素类继承的“ CD”类。像这样:
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
[System.Xml.Serialization.XmlInclude(typeof(CD))]
public partial class ClinicalDocumentComponentComponentSectionEntryObservationValue
{
...//
}
[System.Xml.Serialization.XmlType("CD", Namespace = "urn:hl7-org:v3")]
public class CD : ClinicalDocumentComponentComponentSectionEntryObservationValue
{ }
这确实适用于那个Element类,但是问题是我有多个类调用相同的xsi:type =“ urn:CD”
由于不能有多个基类,因此如何使CD类可用于需要它的任何调用类。例如下面的示例,其中我有两个需要使用CD类的类。正确使用它的唯一对象是ClinicalDocumentComponentComponentSectionEntryObservationValue类:
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
[System.Xml.Serialization.XmlInclude(typeof(CD))]
public partial class ClinicalDocumentComponentComponentSectionEntryActEntryRelationshipObservationEntryRelationshipObservationValue
{
...//
}
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "urn:hl7-org:v3")]
[System.Xml.Serialization.XmlInclude(typeof(CD))]
public partial class ClinicalDocumentComponentComponentSectionEntryObservationValue
{
...//
}
[System.Xml.Serialization.XmlType("CD", Namespace = "urn:hl7-org:v3")]
public class CD : ClinicalDocumentComponentComponentSectionEntryObservationValue
{ }