以下舉例說明:
(1)SOAP序列化與反序列化的程序示例
[Serializable] //必須添加序列化特性
public class Person
{
private string Name;//姓名
private bool Sex;//性別,是否是男
public Person(string name, bool sex)
{
this.Name = name;
this.Sex = sex;
}
public override string ToString()
{
return "姓名:" + this.Name + "\t性別:" + (this.Sex ? "男" : "女");
}
}
[Serializable] //必須添加序列化特性
public class Programmer : Person
{
private string Language;//編程語言
public Programmer(string name, bool sex, string language) : base(name, sex)
{
this.Language = language;
}
public override string ToString()
{
return base.ToString() + "\t編程語言:" + this.Language;
}
}
class Program
{
static void Main(string[] args)
{
//實例化對象
Programmer p = new Programmer("李志偉", true, "C、C#、C++、Java");
//使用SOAP序列化對象
string fileName = @"D:\\users\lizw\桌面\Programmers.xml";//文件名稱與路徑
Stream fStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
SoapFormatter soapFormat = new SoapFormatter();//創建SOAP序列化器
soapFormat.Serialize(fStream, p);//SOAP不能序列化泛型對象
//使用SOAP反序列化對象
fStream.Position = 0;//重置流位置
p = null;
p = (Programmer)soapFormat.Deserialize(fStream);
Console.WriteLine(p);
Console.Read();
}
}
(2)總結
SOAP序列化與二進制序列化的區別是:SOAP序列化不能序列化泛型類型。與二進制序列化一樣在序列化時不需要向序列化器指定序列化對象的類型。而XML序列化需要向XML序列化器指定序列化對象的類型。
閱讀更多 老孔說編程 的文章