我有一个名为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非常重要,所以我可以阅读它。
我希望你理解我的问题,谢谢你的帮助:)。
答案 0 :(得分: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]
属性的成员,并跳过其他成员。