【发布时间】:2012-03-22 21:18:14
【问题描述】:
想象一下这是我的场景:
public abstract class Foo
{
public abstract int X { get; set; }
}
public class FooA : Foo
{
public override int X { get; set; }
public int Y { get; set; }
}
public class FooB : Foo
{
public override int X { get; set; }
public int Z { get; set; }
}
这是一项服务,我有一些对象要序列化。
public class FooService
{
public List<Foo> GetModels()
{
return new List<Foo>()
{
new FooA() { X = 3, Y = 6 },
new FooB() { X = 5, Z = 10 }
};
}
}
这是我无法序列化对象的方法,它会引发异常。我想序列化派生类。
private void SerializeObjects()
{
FooService service = new FooService();
var a = service.GetModels();
XmlSerializer x = new XmlSerializer(a.GetType());
TextWriter writer = new StreamWriter("A.xml");
x.Serialize(writer, a);
writer.Close();
}
【问题讨论】:
-
有什么异常?你试过什么?
-
异常文本是什么?我敢打赌,它是在抱怨已知类型并告诉你如何处理它。
-
@Vache 这是我的错误:生成 XML 文档时出错。
-
这些类都没有 XML 属性声明。您必须通过装饰 Foo、FooA、FooB 等的属性和属性来告诉序列化程序要序列化什么
-
内部异常告诉你
"The type FooA was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.":-)
标签: c# xml serialization xml-serialization