我InvalidOperationException在尝试运行此代码时遇到了问题。
示例代码
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace XMLSerializationExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Caravan c = new Caravan();
            c.WriteXML();
        }
    }
    [XmlRoot("caravan", Namespace="urn:caravan")]
    public class Caravan
    {
        [XmlElement("vehicle")]
        public Auto Vehicle;
        public Caravan()
        {
            Vehicle = new Car {
                Make = "Suzuki",
                Model = "Swift",
                Doors = 3
            };
        }
        public void WriteXML()
        {
            XmlSerializer xs = new XmlSerializer(typeof(Caravan));
            using (TextWriter tw = new StreamWriter(@"C:\caravan.xml"))
            {
                xs.Serialize(tw, this);
            }
        }
    }
    public abstract class Auto
    {
        public string Make;
        public string Model;
    }
    public class Car : Auto
    {
        public int Doors;
    }
    public class Truck : Auto
    {
        public int BedLength;
    }
}
内部异常
{“类型 XMLSerializationExample.Car 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。”}
问题
如何修复此代码?还有什么我应该做的吗?
我在哪里放置以下内容?
[XmlInclude(typeof(Car))]
[XmlInclude(typeof(Truck))]
将属性放在Auto或Caravan类之上不起作用。将类型直接添加到XmlSerializer下面的示例中也不起作用。
XmlSerializer xs = new XmlSerializer(typeof(Caravan), new Type[] {
    typeof(Car), typeof(Truck) });