30/09/2018, 17:35

Lưu một mảng đối tượng vào tệp tin C#

Mình có viết một chương trình Caro bằng C# Winform, đang làm chức năng lưu lại ván đấu và load nó lên lại khi cần.
Cái mình cần lưu là 1 mảng các đối tượng có kiểu là <Ô_cờ>
Class <Ô_cờ> của mình chứa một số đối tượng private nhưng có đóng gói get - set. Nếu dùng FileStream thì ko lưu đc vì đối tượng mình chưa nhiều kiểu dữ liệu.
Mình search thấy và dùng XML Serializer thì nó báo lỗi là: An unhandled exception of type ‘System.InvalidOperationException’ occurred in System.Xml.dll
Additional information: There is an error in XML document (10, 12).
Theo quá trình search thì đó là do các biến trong Class <Ô_cờ> bị private nên không lưu được, dù mình đã sửa thành public class <Ô_cờ> rồi.
Mong nhận được sự giúp đỡ của các bạn.

Đây là code load và save của mình:

public void SaveGame(string path)
{


    XmlSerializer writer = new XmlSerializer(typeof(Square));
    StreamWriter file = new StreamWriter(path);

    for (int i = 0; i < _board.Rows; i++)
    {
        for (int j = 0; j < _board.Columns; j++)
        {
            writer.Serialize(file, SqrArr[i, j]);
        }
    }
   
    file.Close();
    System.Windows.Forms.MessageBox.Show("Đã lưu!", "IceTea Việt");

}


public bool LoadGame(string path)
{
    
    try
    {
            XmlSerializer reader =  new XmlSerializer(typeof(Square));
            StreamReader file = new StreamReader(path);
            
           

        for (int i = 0; i < _board.Rows; i++)
        {
            for (int j = 0; j < _board.Columns; j++)
            {
                 SqrArr[i,j] = (Square)reader.Deserialize(file);
            }
        }
            return true;
    }
    catch (FileNotFoundException ex)
    {
        System.Windows.Forms.MessageBox.Show("Không tìm thấy ván cờ đã lưu!","IceTea Việt");
        return false;
    }
}
Bài liên quan
0