【问题标题】:Convert Child Class to Base Class for XML Serialization?将子类转换为 XML 序列化的基类?
【发布时间】:2012-04-19 20:59:26
【问题描述】:

我有一个基类StandardMeasurement 和一个派生类CustomMeasurement,两者都可以序列化。

这是我想做的:

  1. CustomMeasurement 从文件加载到customMeasInstance
  2. 创建新标准。测量s.t.:StandardMeasurement stdMeas = (StandardMeasurement)customMeasInstance
  3. stdMeas(仅)序列化为StandardMeasurement 类型。

我在尝试时遇到错误,因为 XML 序列化程序仍将 stdMeas 视为 CustomMeasurement。有没有办法可以做到这一点,还是我必须手动“复制”所有信息?

谢谢!

【问题讨论】:

  • I get an error 这是什么错误?

标签: c# xml


【解决方案1】:

使用System.Xml.Serialization.XmlSerializer 类,您应该能够执行以下操作:

编辑 - 删除 object initializer 以与 .NET 2.0 兼容

var cust = new CustomMeasurement();

cust.SomeProperty = "Foo";
cust.AnotherProperty = "Bar";

var serializer = new XmlSerializer(typeof(StandardMeasurement), new Type[] { cust.GetType() });
serializer.Serialize(Console.Out, cust);

【讨论】:

  • 好吧,我使用的是 .NET 2.0,所以我无法尝试:\ 但我确实尝试将 XmlInclude(typeof(CustomMeasurement)) 属性添加到我的 StandardMeasurement 类中。它现在序列化但包含我不想要的子属性。想法?
  • XmlSerializer 类在 .NET 2.0 中也可用。 object initializer 直到 3.5 才出现,但您可以初始化对象并以传统方式设置属性。
猜你喜欢
  • 1970-01-01
  • 2013-05-08
  • 2013-01-03
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多