2010-06-03 7 views
0

je suis en train de XML sérialisation un objet de classe, mais ayant le problème suivant:C# XML Serializable Erreur

le code compile bien et le messagebox affiche toutes les données correctes mais quand je l'ai vue le XML, il ne semble pas inclure les données pour le transfert réel, c'est-à-dire les données FireGridLocation, sont manquantes dans le fichier XML.

 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()); 

alt text http://img52.imageshack.us/img52/220/errorce.jpg

ici est le FireGridUnit:

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

    public GridUnit FireGridLocation; 
} 

et est ici la classe 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; } 
    } 
} 

si vous pouvez aider à ce problème, votre entrée est très Bienvenue.

Répondre

0

La sérialisation XML peut uniquement sérialiser les propriétés de lecture/écriture. Vos propriétés getColumn et getRow sont en lecture seule, elles ne peuvent donc pas être sérialisées.

BTW, l'attribut Serializable est pas nécessaire pour la sérialisation XML

+0

oui im ​​nouveau à cela, mais origine du problème: à ce que je l'ai signalé. c'est bon à savoir, savoir. Je vous remercie. – iTEgg