Bear-Study-Hard

In 2008, I am absorbed in MOSS 2007, WF, ASP.NET 2.0, WPF, WCF and Wirte more Articles. ^_^
posts - 162, comments - 672, trackbacks - 144, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

System.SerializableAttribute

串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。

只需给类添加Serializable属性,就可以实现串行化实例的成员。

并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。

例:

 

 1    [Serializable]
 2    public class Person
 3    {
 4        public Person()
 5        {
 6        }

 7
 8        public int Age;
 9        public int WeightInPounds;
10    }

    下面来看一个小例子,首先要添加命名空间

using System.Runtime.Serialization.Formatters.Binary;

下面的代码将对象Person进行序列化并存储到一个文件中

   

 

 1            Person me = new Person();
 2
 3            me.Age = 34;
 4            me.WeightInPounds = 200;
 5
 6            Stream s = File.Open("Me.dat",FileMode.Create);
 7
 8            BinaryFormatter bf = new BinaryFormatter();
 9
10            bf.Serialize(s,me);
11
12            s.Close();

    然后再举一个并行化的例子   

            Stream s = File.Open("Me.dat",FileMode.Open);

            BinaryFormatter bf 
= new BinaryFormatter();

            
object o = bf.Deserialize(s);

            Person p 
= o as Person;
            
if(p != null)
                Console.WriteLine(
"DeSerialized Person aged:{0} whight:{1}",p.Age,p.WeightInPounds);

            s.Close();

    如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现

 

    [Serializable]
    
public class Person
    
{
        
public Person()
        
{
        }


        
public int Age;
        [NonSerialized]
        
public int WeightInPounds;
    }

Feedback

#1楼    回复  引用    

2006-04-29 11:18 by dujun100 [未注册用户]
不错,不错!

#2楼    回复  引用    

2007-02-07 16:31 by zsw886 [未注册用户]
很好!
谢谢!

#3楼    回复  引用    

2007-05-25 13:19 by 豆子 [未注册用户]
请问哈,如何在文件中追加数据?谢谢!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: