继承XmlSerializer C#

sst*_*oss 1 c# inheritance xmlserializer

我有这三个班:

Class Image : Asset
Class Sound : Asset
Class Video : Asset
Run Code Online (Sandbox Code Playgroud)

一切都序列化好,但当我创建这个项目时:

Class Master
List<Asset> assets //property
Run Code Online (Sandbox Code Playgroud)

例如,这个类的一个实例:

Image i = new Image();
Sound s = new Sound();
Video v = new Video();
Master m =  new Master( new List<Asset>{i,s,v} )
Run Code Online (Sandbox Code Playgroud)

它没有序列化异常"InvalidOperationException - 生成XML文档时出错",并且在innerException中:{"不期望MyApplication.Video类型.使用XmlInclude或SoapInclude属性指定静态未知的类型." }

.. 任何的想法??

Tho*_*que 6

XmlIncludeAsset类上添加属性:

[XmlInclude(typeof(Video))]
[XmlInclude(typeof(Sound))]
[XmlInclude(typeof(Image))]
public class Asset
{
    ...
}
Run Code Online (Sandbox Code Playgroud)