前一篇讲了系列化有三种方法,分别是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;
今天我们就一起来学习系列化的具体方法.
首先看一段代码:
  // create a file stream to write the file
        FileStream fileStream = new FileStream(@"C:/DoSum.xml", FileMode.Create);
        sObj 
= this.BuildSumObj();

        
// use the CLR binary formatter
        System.Xml.Serialization.XmlSerializer
            formatter 
= new XmlSerializer(typeof(SumOf));
        
// serialize to disk
        formatter.Serialize(fileStream, sObj);
        fileStream.Close();
首先使用FileStream创建了个xml文件(添加using System.IO;),BuildSumObj()方法是给sObj加入0-9的数.代码如下:

 private SumOf BuildSumObj()
    
{
        SumOf sObj 
= new SumOf();
        
for (int i = 0; i < 10; i++)
        
{
            sObj.Members.Add(i);
        }

        sObj.Calculate();
        
return sObj;
    }
SumOf是一个序列化的类,代码如下:
 [Serializable]
    
public class SumOf
    
{
        
public SumOf()
        
{
        }


        
public DecimalList Members = new DecimalList();

        
public decimal Sum, Avg;

        
public void Calculate()
        
{
            
this.Sum = 0;
            
foreach (decimal m in Members)
            
{
                Sum 
+= m;
            }

            
this.Avg = Sum / Members.Count;

        }

        [Serializable]
        
public class DecimalList : List<decimal>
        
{
        }


    }

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

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

posted on 2007-06-10 21:56  过江  阅读(670)  评论(0编辑  收藏  举报