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