0

我有一个如下定义的列表,该列表是从GridView. 一切都好。

将此列表保存/加载到文件(XML 或其他方式都可以)的最佳方法是什么?

注意:将来,我将对文件进行加密。

C# 代码

List<Item> lstNewItems = new List<Item>(); // Control Items  
lstNewItems.Clear();

foreach (GridViewRow PendingItemUnderControl in GridViewPendingList.Rows)
{
    Item NewItem = new Item();
    NewItem.Paramater = PendingItemUnderControl.Cells[0].Text.ToLower();
    NewItem.Type = (String)Session["BrowseType"];
    lstNewItems.Add(NewItem);
}

public class Item
{
    public Item(string Paramater, string Type)
    {         
        _Paramater = Paramater;
        _Type = Type;
    }
    private string _Paramater;
    [DataMember]
    public string Paramater
    {
        get { return _Paramater; }
        set { _Paramater = value; }
    }
    private string _Type;
    [DataMember]
    public string Type
    {
        get { return _Type; }
        set { _Type = value; }
    }
}
4

3 回答 3

2

ProtoBuf Net是一个二进制序列化器,但它非常灵活和快速

于 2012-12-01T15:03:36.317 回答
1

对于结构化数据,XML 或非常轻量级的 SQL RDBMS(如 SQLite 或 SQL Server Compact Edition)都可以很好地工作

我推荐XML文件的读取器/写入器类,因为它很容易序列化序列
化是将对象转换为二进制表示的简单方法,然后可以将其写入磁盘或通过线路发送。

于 2012-12-01T14:45:47.313 回答
1

解决方案 C# 代码

#region Save the object

            // Create a new XmlSerializer instance with the type of the test class
            XmlSerializer SerializerObj = new XmlSerializer(typeof(List<Item>));

            // Create a new file stream to write the serialized object to a file
            TextWriter WriteFileStream = new StreamWriter(@"C:\test.xml");
            SerializerObj.Serialize(WriteFileStream, lstNewItems);

            // Cleanup
            WriteFileStream.Close();

            #endregion

            // Load items to control
            #region Load the object

            // Create a new file stream for reading the XML file
            FileStream ReadFileStream = new FileStream(@"C:\test.xml", FileMode.Open, FileAccess.Read, FileShare.Read);

            // Load the object saved above by using the Deserialize function
            List<Item> LoadedObj = (List<Item>)SerializerObj.Deserialize(ReadFileStream);

            // Cleanup
            ReadFileStream.Close();

            #endregion

            // Load up all the settings

            for (int i = 0; i < LoadedObj.Count; i++) // Loop through List with for
            {
                String ThisisAnItemToControl = LoadedObj[i].Paramater;
                String ThisIsItsType = LoadedObj[i].Type;
            } 
于 2012-12-02T16:16:24.527 回答