C# 强类型数据集列需要自定义类型来实现IXmlSerializable?

C# 强类型数据集列需要自定义类型来实现IXmlSerializable?,c#,serialization,dataset,C#,Serialization,Dataset,我有一个强类型数据集,其中有一个表和三列。这些列都包含自定义类型 DataColumn1的类型为Parent DataColumn2的类型为Child1 DataColumn3属于Child2类型 以下是这些类的外观: [Serializable] [XmlInclude(typeof(Child1)), XmlInclude(typeof(Child2))] public abstract class Parent { public int p1; } [Serializabl

我有一个强类型数据集,其中有一个表和三列。这些列都包含自定义类型

DataColumn1的类型为Parent

DataColumn2的类型为Child1

DataColumn3属于Child2类型

以下是这些类的外观:

    [Serializable]
[XmlInclude(typeof(Child1)), XmlInclude(typeof(Child2))]
public abstract class Parent
{
    public int p1;
}
[Serializable]
public class Child1 :Parent
{
    public int c1;
}
[Serializable]
public class Child2 : Parent
{
    public int c1;
}
现在,如果我添加了一行,其中DataColumn1为null,并且填充了DataColumn2和DataColumn3,并尝试对其进行序列化,那么它可以工作:

            DataSet1 ds = new DataSet1();
        ds.DataTable1.AddDataTable1Row(null, new Child1(), new Child2());

        StringBuilder sb = new StringBuilder();
        using (StringWriter writer = new StringWriter(sb))
        {
            ds.WriteXml(writer);//Works!
        }
但是,如果我尝试向DataColumn1添加值,则会失败:

            DataSet1 ds = new DataSet1();
        ds.DataTable1.AddDataTable1Row(new Child1(), new Child1(), new Child2());

        StringBuilder sb = new StringBuilder();
        using (StringWriter writer = new StringWriter(sb))
        {
            ds.WriteXml(writer);//Fails!
        }
例外情况如下:

类型“WindowsFormsApplication4.Child1,WindowsFormsApplication4,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”未实现IXmlSerializable接口,因此无法继续序列化

我还尝试使用XmlSerializer来序列化数据集,但我得到了相同的异常


有没有人知道一种方法可以避免我不必在所有子类上实现IXmlSerializable的情况?或者,是否有一种方法可以实现IXmlSerializable,使所有默认行为保持相同,即在ReadXml和WriteXml方法中没有任何特定于类的代码

[Serializable]
public class Wrapper
{
    [XmlElement(ElementName="Child1", Type=typeof(Child1)),
    XmlElement(ElementName="Child2", Type=typeof(Child2))]
    public Parent Value { get; set; }
}