【发布时间】:2011-04-29 13:16:06
【问题描述】:
我有 2 个将被序列化为 xml 的派生类。
虽然代码工作正常(XmlSerializer,没什么奇怪的),但 DataScenario 的序列化导致其 MyData 属性项从基类名称生成 Xmlelement 名称:
<DataScenario>
<MyData>
<ScenarioData/>
<ScenarioData/>
<ScenarioData/>
</MyData>
<DataScenario>
相反,我试图让这些项目从它们的派生类中生成 XmlElement 名称
<DataScenario>
<MyData>
<type1/>
<type1/>
<type2/>
</MyData>
<DataScenario>
这甚至可能吗?请记住,我也需要反序列化;我不确定反序列化过程是否会理解需要创建派生对象。
我使用的示例代码如下。
[Serializable]
[XmlInclude(typeof(Type1))]
[XmlInclude(typeof(Type2))]
public class Scenario
{
[XmlElement("location")]
public string Location { get; set; }
[XmlElement("value")]
public string Value { get; set; }
public Scenario()
{
}
}
[Serializable]
[XmlType("type1")]
public class Type1 : Scenario
{
public FillPointData() : base() { }
}
[Serializable]
[XmlType("type2")]
public class Type2 : Scenario
{
public TestData() : base() { }
}
//Hosting class of all scenarios
public DataScenario()
{
public List<Scenario> MyData{ get; set; }
}
【问题讨论】:
-
(这里不需要
[Serializable],顺便说一句) -
是的,不小心将它们包含在一些半连贯的 Ctrl-V 操作中。
标签: c# xml serialization