将子类转换为XML序列化的基类?

时间:2012-04-19 20:59:26

标签: c# xml

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

这是我想要做的:

  1. 从文件中加载CustomMeasurementcustomMeasInstance
  2. 创建新标准。 MEAS。 s.t。:StandardMeasurement stdMeas = (StandardMeasurement)customMeasInstance
  3. stdMeas(仅限)序列化为StandardMeasurement类型。
  4. 我在尝试时遇到错误,因为XML序列化程序仍将stdMeas视为CustomMeasurement。有没有办法可以做到这一点,还是我必须手动“复制”所有信息?

    谢谢!

1 个答案:

答案 0 :(得分: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);