繁体   English   中英

C#XML可序列化错误

[英]C# XML Serializable Error

我正在尝试XML序列化一个类对象,但是有以下问题:

代码可以正常编译,并且消息框显示所有正确的数据,但是当我查看XML时,它似乎并不包括实际传输的数据,即XML中缺少FireGridLocation数据。

        XmlSerializer s;
        StringWriter w;

        FireGridUnit fireGridUnit = new FireGridUnit();
        fireGridUnit.FireGridLocation = new GridUnit(GridLock.getColumn, GridLock.getRow);

        MessageBox.Show("gridlock col " + GridLock.getColumn);


        MessageBox.Show("column fire " + fireGridUnit.FireGridLocation.getColumn);
        MessageBox.Show("row fire " + fireGridUnit.FireGridLocation.getRow);

        s = new XmlSerializer(typeof(FireGridUnit));
        w = new StringWriter();
        s.Serialize(w, fireGridUnit);

        MessageBox.Show(w.ToString());

替代文字http://img52.imageshack.us/img52/220/errorce.jpg

这是FireGridUnit:

[Serializable]
public class FireGridUnit
{
    /// <summary>
    /// Location storage
    /// </summary>
    //public GridUnit FireGridLocation { get; set; }

    public GridUnit FireGridLocation;
}

这是GridUnit类:

public class GridUnit
{
    /// <summary>
    /// Default initialization
    /// </summary>
    public GridUnit()
    {
        Column = -1;
        Row = -1;
    }

    /// <summary>
    /// Initialize to supplied coordinate
    /// </summary>
    /// <param name="column"></param>
    /// <param name="row"></param>
    public GridUnit(int column, int row)
    {
        Column = column;
        Row = row;
    }

    /// <summary>
    /// Set/Return Column
    /// </summary>
    //public int Column { get; set; }

    private int Column;

    public int getColumn
    {
        get { return Column; }
    }

    /// <summary>
    /// Set/Return Row
    /// </summary>
    //public int Row { get; set; }

    private int Row;

    public int getRow
    {
        get { return Row; }
    }
}

如果您可以协助解决这个问题,欢迎您提出宝贵意见。

XML序列化只能序列化读/写属性。 您的getColumngetRow属性是只读的,因此无法序列化。

顺便说一句,XML序列化不需要Serializable属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM