向高手请教使用XmlSerializer序列化对象时的一个异常问题

wbcnxa 2003-08-31 10:18:24
我定义了一个类,类中有一个要序列化的属性是ArrayList类型。现在声明此类的一个实例化对象,向ArrayList类型的属性添加一个元素,添加的元素是一个数组。

问题出现了,就我的尝试,好像无论怎样声明此节点元素类型,当序列化这个对象时总会出现异常,引发异常源于此属性。可能是我使用的方法有问题。

究竟为什么!
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-08-31
  • 打赏
  • 举报
回复
try


using System;
using System.IO;
using System.Xml.Serialization;
using System.Collections;
using System.Xml;

public class MyClass
{
[XmlElement(typeof(MyTestClass)),
XmlElement(typeof(int)),
XmlElement(typeof(string)),
XmlElement(typeof(string[]))]
public ArrayList MyContainer;
}


public class MyTestClass
{
public string Name;
}


public class Test
{
public static void Main()
{
string sFile = "OverrideElement.xml";
Test t = new Test();
t.SerializeObject(sFile);
Console.WriteLine("enter to deserialize");
Console.ReadLine();
t.DeserializeObject(sFile);
}


public void SerializeObject(string filename)
{
XmlSerializer xSer = new XmlSerializer(typeof(MyClass));

MyClass myMyClass = new MyClass();

myMyClass.MyContainer = new ArrayList();
MyTestClass myMyTestClass = new MyTestClass();
myMyTestClass.Name = "MyMyTestClass";
myMyClass.MyContainer.Add(myMyTestClass);
myMyClass.MyContainer.Add("String");

myMyClass.MyContainer.Add(100);

string[] slist = {"hello","world"};

myMyClass.MyContainer.Add(slist);

TextWriter writer = new StreamWriter(filename);
xSer.Serialize(writer, myMyClass);
writer.Close();
}

public void DeserializeObject(string filename)
{
XmlSerializer xSer = new XmlSerializer(typeof(MyClass));

TextReader reader = new StreamReader(filename);

MyClass myMyClass = (MyClass)xSer.Deserialize( reader);

reader.Close();

foreach (object o in myMyClass.MyContainer)
{
Console.WriteLine("{0}:{1}", o.GetType().Name, o);
}
}
}

xiaodele 2003-08-31
  • 打赏
  • 举报
回复
偶也碰到过这样的问题,是不是ArrayList不能序列化啊,用其他对象好像是可以得阿
wbcnxa 2003-08-31
  • 打赏
  • 举报
回复
saucer你不愧是 .Net MVP,佩服!

这问题看似令人很困惑,原来竟一点不难办,我始终没有想到用typeof(object[])去声明我的对象数组,而一直在使用typeof(Array),感动加惭愧..

所谓一分钱难倒英雄汉,看来还是自己学艺太浅。
多谢,多谢

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧