我有一个实现了许多我想要存储的属性的基类,以及一个包含我不想存储的附加属性的派生类(它们可能非常大)。我有一个容器类,其中包含基类列表,而基类列表又包含基类实例和派生类的混合。我为容器类创建了一个XMLSerializer,但是在序列化时,它会抱怨派生类没有包含在内。
是否有任何方法强制序列化程序仅输出基类XML,而不管实例类型如何?
注意,我不想使用XMLInclude,因为我特别不希望存储派生类中的任何属性。
(代码的简化示例)
public class MyBase {
public String Title { get; set; }
}
public class MyDerived : MyBase {
public String Details { get; set; }
}
public class Container {
private static XmlSerializer sSerializer = new XmlSerializer(typeof(Container));
public List<MyBase> mBases { get; set; }
public void MyProblem() {
mBases = new List<MyBase>();
mBases.Add(new MyBase { Title = "One" });
mBases.Add(new MyDerived { Title = "Two", Details = "An incredibly long string" });
using (var lWriter = XmlWriter.Create("C:\\Temp\\output.xml")) {
sSerializer.Serialize(lWriter, this);
}
}
}