2012-12-01 116 views
0

我有一個如下定義的列表,它是從GridView填充的。一切都好。加載並保存列表

什麼是保存/載入的最好方法,該列表/從一個文件(XML或否則OK)?

注意:將來我會加密文件。

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; } 
    } 
} 
+1

我相信easiets的方法是使用的XmlSerializer這樣做對你,但請您分享項目類定義確保你可以在不做任何修改的情況下使用它 – sll

+1

最簡單的方法是使用二進制序列化(BinaryFormatter)。 – RavingDev

+0

@sll i jave將項目定義添加到我的問題中。 XMLSerializer仍然是正確的答案? – user1438082

回答

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; 
      } 
1

結構化數據,XML或一款非常輕便的SQL RDBMS喜歡的SQLite或SQL Server精簡版將工作的文件以及

我建議XML讀/寫器類因爲它易於序列化
序列化是一種將對象轉換爲二進制表示的簡單方法,然後可以將其寫入磁盤或通過線路發送。