【发布时间】:2011-07-01 10:40:13
【问题描述】:
我在这里遇到了一种情况,我需要从List<ItemType> 继承我的类,但是当我这样做时,XmlSerializer 不会序列化我的类中声明的任何属性或字段,以下示例演示:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DoSerialize();
}
private void DoSerialize()
{
MyClass obj = new MyClass();
obj.Add(1);
obj.Add(2);
obj.Add(3);
XmlSerializer s = new XmlSerializer(typeof(MyClass));
StringWriter sw = new StringWriter();
s.Serialize(sw, obj);
}
}
[Serializable]
[XmlRoot]
public class MyClass : List<int>
{
public MyClass()
{
}
int myAttribute = 2011;
[XmlAttribute]
public int MyAttribute
{
get
{
return myAttribute;
}
set
{
myAttribute = value;
}
}
}
生成的 XML:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>1</int>
<int>2</int>
<int>3</int>
</ArrayOfInt>
【问题讨论】:
-
这是您通常不应继承
List的众多原因之一。 -
@kirk:是的,我也是这么想的,但是这次我不得不,我没有开始项目,是这样的,我必须对其进行序列化
-
@Kirk 不同意该原则,但在这里(根据@driis 答案中的链接)问题实际上是实现
IEnumerable根本 意味着您自己的属性不不要被连载!这似乎很苛刻...... -
@AakashM 抱歉重复,我搜索但没有找到,可能是我使用了错误的关键字
标签: c# .net list xml-serialization ienumerable