您的位置:首页 > 其它

在应用会话之间持久存储集合

2008-03-12 13:30 99 查看
一个集合,如ArrayList,List<T>,Hashtable,或Dictionary<T,U>,其中存储着应用信息。可以使用这些信息将应用环境调整为上一个已知的设置(如:窗口大小,窗口摆放,当前显示的工具条等等,)还可以用它来允许用户从其最后一次关闭处启动应用。也就是说,如果用户在编辑一个发货单,因为太晚了而需要关闭计算机,应用它能准确地知道下一次启动应用时要显示哪个发货单。

利用方法是对象序列话到文件,并从文件反序列化:




public static void SaveObj<T>(T obj, string dataFile)




    ...{


        FileStream FS = File.Create(dataFile);


        BinaryFormatter binSerializer = new BinaryFormatter( );


            //序列化对象,并写到文件中


        binSerializer.Serialize(FS, obj);


        FS.Close( );


    }




public static T RestoreObj<T>(string dataFile)




    ...{


        FileStream FS = File.OpenRead(dataFile);


        BinaryFormatter binSerializer = new BinaryFormatter( );


            //从文件反序列化对象


        T obj = (T)binSerializer.Deserialize(FS);


        FS.Close( );




        return (obj);


    }



 
dataFile参数接受一个串值,SaveObj<T>方法接受一个对象,并试图将其进行序列化到一个文件,反过来,RestoreObj<T>方法从文件中删除SaveObj<T>方法中创建的序列化对象。

以下是测试代码:


public static void TestSerialization( )




...{


       // Create a List<int> object to save/restore to/from a file.


    Console.WriteLine( );


    List<int> test = new List<int>( );


    test.Add(1);


    test.Add(2);




    // Display this object's contents and save it to a file.


    foreach (int i in test)


        Console.WriteLine(i.ToString( ));


    SaveObj<List<int>>(test, "TEST.DATA");




    // Restore this object from the same file and display its contents.


    List<int> testNew = new List<int>( );


    testNew = RestoreObj<List<int>>("TEST.DATA");


    foreach (int i in testNew)


        Console.WriteLine(i.ToString( ));


}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐