XML Serialization with subclass
-
Hi, I'm trying to serialize a simple configuration class that contains a few methods and primitive types. It also contains one very simple class:
[XmlRootAttribute(ElementName = "WildAnimal", IsNullable = false)]
class Config
{
public int a;
public int b;
public SimpleClass classinst;public Config() }
class SimpleClass
{
public int c;
public int d;public SimpleClass() }
Along with Serialize/Deseriailze functions inside the Config class:
public void SerializeObject(Object pObject) { try { FileStream fileStream = new FileStream(s\_strBaseThemeDirectory + @"\\" +m\_strName+".xml", FileMode.CreateNew, FileAccess.ReadWrite); XmlSerializer xs = new XmlSerializer(typeof(Config)); XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); fileStream = (FileStream)xmlTextWriter.BaseStream; fileStream.Close(); } catch (Exception e) { Utilities.Trace("Error Serializing the XML: " + e.ToString()); } } public Configuration DeserializeObject(string strName) { FileStream fileStream = new FileStream("filename.xml", FileMode.Open, FileAccess.ReadWrite); XmlSerializer xs = new XmlSerializer(typeof(Config)); XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, Encoding.UTF8); return (Configuration)xs.Deserialize(fileStream);
}
Everything works fine without the SimpleClass, but when that gets thrown into the mix I've been running into exceptions being thrown (the SimpleClass is actually in an Arraylist). Any idea how I should get around this issue? Thanks! -Ken
-
Hi, I'm trying to serialize a simple configuration class that contains a few methods and primitive types. It also contains one very simple class:
[XmlRootAttribute(ElementName = "WildAnimal", IsNullable = false)]
class Config
{
public int a;
public int b;
public SimpleClass classinst;public Config() }
class SimpleClass
{
public int c;
public int d;public SimpleClass() }
Along with Serialize/Deseriailze functions inside the Config class:
public void SerializeObject(Object pObject) { try { FileStream fileStream = new FileStream(s\_strBaseThemeDirectory + @"\\" +m\_strName+".xml", FileMode.CreateNew, FileAccess.ReadWrite); XmlSerializer xs = new XmlSerializer(typeof(Config)); XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); fileStream = (FileStream)xmlTextWriter.BaseStream; fileStream.Close(); } catch (Exception e) { Utilities.Trace("Error Serializing the XML: " + e.ToString()); } } public Configuration DeserializeObject(string strName) { FileStream fileStream = new FileStream("filename.xml", FileMode.Open, FileAccess.ReadWrite); XmlSerializer xs = new XmlSerializer(typeof(Config)); XmlTextWriter xmlTextWriter = new XmlTextWriter(fileStream, Encoding.UTF8); return (Configuration)xs.Deserialize(fileStream);
}
Everything works fine without the SimpleClass, but when that gets thrown into the mix I've been running into exceptions being thrown (the SimpleClass is actually in an Arraylist). Any idea how I should get around this issue? Thanks! -Ken
Did You added the attributes [Serializable] in classes ? this should be fix the problem : [Serializable] class Config { public int a; public int b; public SimpleClass classinst; public Config() } [Serializable] class SimpleClass { public int c; public int d; public SimpleClass() }} }