2012-04-19 87 views
0

我有一个基类StandardMeasurement和派生类CustomMeasurement这两个都可以序列化。将子类转换为XML序列化的基类?

这是我想做的事:从文件

  1. 加载一个CustomMeasurementcustomMeasInstance
  2. 创建新的std。 MEAS。 s.t .: StandardMeasurement stdMeas = (StandardMeasurement)customMeasInstance
  3. 序列号stdMeas(仅)作为StandardMeasurement类型。

尝试时出现错误,因为stdMeas仍被XML序列化程序认为是CustomMeasurement。有没有办法做到这一点,或者我必须手动“复制”所有信息?

谢谢!

+0

兼容性'我得到一个error'这是什么错误? – 2012-04-19 21:06:17

回答

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); 
+0

好吧,我使用.NET 2.0,所以我不能尝试:\但我尝试添加'XmlInclude(typeof(CustomMeasurement))'属性到我的'StandardMeasurement'类。它现在序列化,但包含我不想要的子属性。思考? – john 2012-04-19 21:33:07

+0

也可以在.NET 2.0中使用'XmlSerializer'类。 “对象初始值设定项”直到3.5才出现,但您可以用传统方式初始化对象并设置属性。 – 2012-04-19 21:44:01