下面的代码在反序列化时报错,不知道为什么?         [Serializable]
public class myClass
{
public string m_StringTest; protected string m_strName;
protected string m_strNameEn;
protected int m_iGender; public string Name
{
get
{
return m_strName;
}
set
{
m_strName = value;
}
}
public myClass()
{
m_StringTest = "";
m_strName = "";
m_strNameEn = "";
m_iGender = 0;
}
}
----------------------------------------------------    System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(myClass)); myClass objClass = new myClass();
objClass.Name = "Test";
objClass.m_StringTest = "Test";
System.IO.MemoryStream objStream = new System.IO.MemoryStream(); formatter.Serialize(objStream,objClass);

Console.WriteLine("序列化结果:"); objStream.Position = 0;

System.Xml.XmlTextReader xr = new System.Xml.XmlTextReader(objStream);
System.Xml.XmlDocument objXml = new System.Xml.XmlDocument();
objXml.Load(xr); Console.WriteLine(objXml.OuterXml);
Console.WriteLine("反序列化结果:"); System.Xml.Serialization.XmlSerializer mySerializer  = new System.Xml.Serialization.XmlSerializer(typeof(myClass)); myClass objNewClass = (myClass)mySerializer.Deserialize(xr);

Console.WriteLine(objNewClass.m_StringTest);

解决方案 »

  1.   

    报:未将对象引用到对象的实例,在最后一行
    Console.WriteLine(objNewClass.m_StringTest);
      

  2.   

    System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(myClass));myClass objClass = new myClass();
    objClass.Name = "Test";
    objClass.m_StringTest = "Test";
    System.IO.MemoryStream objStream = new System.IO.MemoryStream();formatter.Serialize(objStream,objClass);Console.WriteLine("反序列化结果:");objStream.Position = 0;System.Xml.XmlTextReader xr = new System.Xml.XmlTextReader(objStream);
    System.Xml.XmlDocument objXml = new System.Xml.XmlDocument();
    objXml.Load(xr);Console.WriteLine(objXml.OuterXml);
    Console.WriteLine("反序列化结果:");
    System.Xml.Serialization.XmlSerializer mySerializer  = new System.Xml.Serialization.XmlSerializer(typeof(myClass));objStream.Position = 0;//添加
    myClass objNewClass = (myClass)mySerializer.Deserialize(objStream);Console.WriteLine(objNewClass.m_StringTest);你记得第一次的Position = 0却忘了第二次Position = 0
      

  3.   

    oh, that's right.thank you very much^_^