C#如何反序列化多个对象

假设该对象只有两个值类型的简单属性,通过foreach(遍历该对象集合)进行了多次序列化,如何反序列化... 假设该对象只有两个值类型的简单属性,通过foreach(遍历该对象集合)进行了多次序列化,如何反序列化 展开
 我来答
_神__仙_
2011-01-17 · TA获得超过1257个赞
知道小有建树答主
回答量:806
采纳率:0%
帮助的人:531万
展开全部
你可以通过将两个值类型封装成对象的属性,并标记该对象为可序列化的,然后对该对象的集合进行序列化,然后取的时候反序列化该对象集合,这样不是更方便吗.
cdeoug
2011-01-17 · TA获得超过3136个赞
知道小有建树答主
回答量:1224
采纳率:0%
帮助的人:1113万
展开全部
没什么好说的,写个例子给你看吧,有些代码用了VS2008的特性,如果你用的是VS2008以下的版本,自己改下吧。

using System;
using System.Text;
using System.IO;
using System.Xml.Serialization;

namespace Demo
{

public class Account
{
public int UserID
public string Username
}

class Program
{
static void Main( string[] args )
{
Account[] accounts = {
new Account(),
new Account(),
new Account()
};

string savePath = @"c:\XmlSerializerTest.txt";
XmlSerializer xs = new XmlSerializer( typeof( Account[] ) );
using ( TextWriter tw = new StreamWriter( savePath ) )
{
xs.Serialize( tw, accounts );
tw.Close();
using ( TextReader tr = new StreamReader( savePath ) )
{
Account[] deSerializedValue = xs.Deserialize( tr ) as Account[];
if ( deSerializedValue != null && deSerializedValue.Length > 0 )
{
for ( int i = 0; i < deSerializedValue.Length; i++ )
{
Console.WriteLine( "\tUserID = , Username = ", i, deSerializedValue[ i ].UserID, deSerializedValue[ i ].Username );
}
}
}
}

Console.ReadKey();
}
}

}

//----------二进制方式,可以使用BinaryFormatter 类来以二进制格式将对象或整个连接对象图形序列化和反序列化
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace Demo
{
[Serializable]
public class Account
{
public int UserID
public string Username
}

class Program
{
static void Main( string[] args )
{
Account[] accounts = {
new Account(),
new Account(),
new Account()
};

string savePath = @"c:\BinarySerializerTest.bin";
BinaryFormatter formatter = new BinaryFormatter();

using ( FileStream writeStream = new FileStream( savePath, FileMode.Create, FileAccess.Write ) )
{
formatter.Serialize( writeStream, accounts );
//xs.Serialize( tw, accounts );
writeStream.Close();
using ( FileStream readStream = new FileStream( savePath, FileMode.Open, FileAccess.Read ) )
{
Account[] deSerializedValue = formatter.Deserialize( readStream ) as Account[];
if ( deSerializedValue != null && deSerializedValue.Length > 0 )
{
for ( int i = 0; i < deSerializedValue.Length; i++ )
{
Console.WriteLine( "\tUserID = , Username = ", i, deSerializedValue[ i ].UserID, deSerializedValue[ i ].Username );
}
}
}
}

Console.ReadKey();
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式