0

我有一个名为 MyBoard 的类,看起来像这样

Public MyBoard
{
private BoardTile[,] tiles;
private bool tilesEliminated;
public int blabla {get; set; }
}

如果我正确理解 Serializable 属性序列化整个类,我试图做的是能够仅将我想要的字段序列化为 XML 格式(其他字段无关)

就我而言,我想写一些看起来像这样的东西:

[ISerializable]
Public MyBoard
{
[SerializeMe]
private BoardTile[,] tiles;
private bool tilesEliminated;
public int blabla {get; set; }
}

我想用一些属性选择要序列化的内容和不序列化的内容,更多的是在“BoardTile”类中,我想做同样的事情并选择相关字段。

然后写这样的东西

main()
{
MyBoard m = new MyBoard();
//fill the tiles somehow.
m.SerializeToXml();
}

如果我理解正确,我需要通过继承 ISerializable 自己编写自定义序列化程序,但也许可以避免它并让 .Net 使用我不知道的一些属性自动序列化。

顺便说一句,输出将是 XML 对我来说很重要,这样我就可以阅读它。

我希望你能理解我的问题,谢谢你的帮助:)

4

1 回答 1

1

使用DataContract属性和XmlSerializer类:

[DataContract]
Public MyBoard
{
    [DataMember]
    pricate BoardTile[,] tiles;

    private bool tilesEliminated;

    public int blabla {get; set; }
}

和序列化:

var board = new MyBoard();

var ser = new DataContractSerializer(typeof(MyBoard));
var sw = new StringWriter();
ser.WriteObject(sw, board);
sw.Close();
var xml = sw.ToString();

它将仅序列化标记有[DataMember]属性的成员并跳过其他成员。

于 2013-07-06T12:54:35.470 回答