.net Remoting(2)序列化实例

前一篇讲了系列化有三种方法,分别是XML,SOAP,二进制.
XML的命名空间为:using System.Xml.Serialization;
SOAP的命名空间为:using System.Runtime.Serialization.Formatters.Soap;(必须添加 System.Runtime.Serialization.Formatters.Soap的引用)
,二进制的命名空间:using System.Runtime.Serialization.Formatters.Binary;
今天我们就一起来学习系列化的具体方法.
首先看一段代码:
None.gif    //  create a file stream to write the file
None.gif
        FileStream fileStream  =   new  FileStream( @" C:/DoSum.xml " , FileMode.Create);
None.gif        sObj 
=   this .BuildSumObj();
None.gif
None.gif        
//  use the CLR binary formatter
None.gif
        System.Xml.Serialization.XmlSerializer
None.gif            formatter 
=   new  XmlSerializer( typeof (SumOf));
None.gif        
//  serialize to disk
None.gif
        formatter.Serialize(fileStream, sObj);
None.gif        fileStream.Close();
首先使用FileStream创建了个xml文件(添加using System.IO;),BuildSumObj()方法是给sObj加入0-9的数.代码如下:

None.gif   private  SumOf BuildSumObj()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        SumOf sObj 
= new SumOf();
InBlock.gif        
for (int i = 0; i < 10; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            sObj.Members.Add(i);
ExpandedSubBlockEnd.gif        }

InBlock.gif        sObj.Calculate();
InBlock.gif        
return sObj;
ExpandedBlockEnd.gif    }
SumOf是一个序列化的类,代码如下:
None.gif  [Serializable]
None.gif    
public   class  SumOf
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public SumOf()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
public DecimalList Members = new DecimalList();
InBlock.gif
InBlock.gif        
public decimal Sum, Avg;
InBlock.gif
InBlock.gif        
public void Calculate()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.Sum = 0;
InBlock.gif            
foreach (decimal m in Members)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                Sum 
+= m;
ExpandedSubBlockEnd.gif            }

InBlock.gif            
this.Avg = Sum / Members.Count;
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif        [Serializable]
InBlock.gif        
public class DecimalList : List<decimal>
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
生成的结果如下:
None.gif <? xml version = " 1.0 " ?>
None.gif
< SumOf xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance "  xmlns:xsd = " http://www.w3.org/2001/XMLSchema " >
None.gif  
< Members >
None.gif    
< decimal > 0 </ decimal >
None.gif    
< decimal > 1 </ decimal >
None.gif    
< decimal > 2 </ decimal >
None.gif    
< decimal > 3 </ decimal >
None.gif    
< decimal > 4 </ decimal >
None.gif    
< decimal > 5 </ decimal >
None.gif    
< decimal > 6 </ decimal >
None.gif    
< decimal > 7 </ decimal >
None.gif    
< decimal > 8 </ decimal >
None.gif    
< decimal > 9 </ decimal >
None.gif  
</ Members >
None.gif  
< Sum > 45 </ Sum >
None.gif  
< Avg > 4.5 </ Avg >
None.gif
</ SumOf >

这个只是XML,其它的都雷同,在这里就不多说了.
在此感谢MSDN邵志东老师!
完整代码下载

转载于:https://www.cnblogs.com/gjahead/archive/2007/06/10/778540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值