我想使用IXmlSerializable
接口將一系列從單個抽象超類WorldObject
派生的子類序列化爲XML。我不得不使用這個接口,因爲我希望類能夠訂閱一些事件,因爲它是反序列化的。IXmlSerializable抽象類創建異常
使用this答案,我想出了下面的代碼:
[XmlInclude(typeof(SubType1))
,XmlInclude(typeof(SubType2))] // etc, includes all subtypes
public abstract class WorldObject : IComparable, IXmlSerializable
public void WriteXml(System.Xml.XmlWriter writer)
{
Type[] extraTypes = new Type[8];
// (...) adding types to array here
var worldObjectSerializer = new XmlSerializer(typeof(List<WorldObject>), extraTypes);
}
最後一行,其中XmlSerializer
初始化拋出一個運行時錯誤:system.missingMethodException而:無法創建抽象類「Namespace.WorldObject」 。當我嘗試使用typeof(WorldObject)
而不是typeof(List<WorldObject>)
時,會引發同樣的錯誤。
我也嘗試將每個類中的XMLRoot設置爲與所示的here中相同的值,但錯誤仍然存在。