Невозможно сериализовать объект - PullRequest
0 голосов
/ 15 апреля 2011

Ниже приведен код, который я использую для сериализации объекта

College college = new College();
college= (College)(Session["XML"]);

public void serializetoxml(College college)
{
    System.Xml.Serialization.XmlSerializer myserializer = new System.Xml.Serialization.XmlSerializer(college.GetType());
    // XmlSerializer myserializer = new XmlSerializer(typeof(College));
    TextWriter mywriter = new StreamWriter("C:\\invoice.xml");
    myserializer.Serialize(mywriter, college);
    mywriter.Close();
} 

Извините, я пропустил код для моего класса, вот он

[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="")]           [System.Xml.Serialization.XmlRootAttribute]
public partial class College{

    /// <remarks/>
    public Header header;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Student")]
    public Student Student;

    /// <remarks/>
    public Summary summary;
}

[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,Namespace="")] 
[System.Xml.Serialization.XmlRootAttribute]
public partial class Invoice {


    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Activity")]

    public List<Activity> Activity;

        }
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class Activity{

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(DataType = "integer")]
    public string StudentNumber;


    /// <remarks/>        
    public string mark1;

    ///  <remarks/> typed it in manually

    public string mark2;
   }

Это ошибка, которую я получаю {"Произошла ошибка, отражающая тип 'A.Common.College'."}

Это пример класса реального времени.

1 Ответ

0 голосов
/ 15 апреля 2011

Посмотрите на внутреннее исключение, которое вы получаете.Он скажет вам, какое поле / свойство имеет проблемы с сериализацией.

Вы можете исключить поля / свойства из сериализации xml, обратив их атрибутом [XmlIgnore ()].

...