Help with custom Serialization
From: Opa (anonymous_at_discussions.microsoft.com)
Date: 06/06/04
- Next message: honeybee: "How to get the index of a selected intem in the listbox?"
- Previous message: Nicholas Paldino [.NET/C# MVP]: "Re: it used to be a simple program in VB6 :("
- Next in thread: Nicholas Paldino [.NET/C# MVP]: "Re: Help with custom Serialization"
- Reply: Nicholas Paldino [.NET/C# MVP]: "Re: Help with custom Serialization"
- Messages sorted by: [ date ] [ thread ]
Date: Sun, 6 Jun 2004 08:26:01 -0700
Hi,
I'm having problem serialization an object instance which contains a public property on the object type.
My object hierarchy is many levels deep, so for simplicty I created to following which produces the same error:
Let's say there is a class called ParkingSpot with a public member Vehicle having an object type of object.
For simplicity, let's say that Vehicle could be anything, hence I create a new object of Car type
and assign it to the Vehicle property of the ParkingSpot object.
When I try to serialize the ParkingSpot class, I get an error with an inner exception stating:
_innerException: {"The type SerializationTest.Car was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically." }
My classes are the following:
using System;
using System.Runtime.Serialization;
using System.Xml.Serialization;
public class ParkingSpot : ISerializable
{
private object _vehicle;
public ParkingSpot(){}
[XmlElement("Vehicle")]
public object Vehicle
{
get
{
return _vehicle;
}
set
{
_vehicle = value;
}
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
// TODO: Add ParkingSpot.GetObjectData implementation
}
#endregion
}
public class Car
{
public string Make;
public string Model;
public Car(){}
}
I have a button on a form with the following serialization code:
private void btnSerialize_Click(object sender, System.EventArgs e)
{
ParkingSpot parkingSpot = new ParkingSpot();
Car car = new Car();
car.Make = "Nissan";
car.Model = "Maxima";
parkingSpot.Vehicle = car;
try
{
// Serialization
XmlSerializer s = new XmlSerializer(typeof(ParkingSpot));
TextWriter w = new StreamWriter(@"C:\ParkingSpot.xml");
s.Serialize(w, parkingSpot);
w.Close();
}
catch (Exception exp)
{
Console.WriteLine ("{0}",exp.Message);
}
}
Does anyone know what the problem is?
I tried changing the [XmlElement] attribute to [XmlAnyElement] attribute, but this causes another error.
Please help, I've been stumped on this one for over a day.
Thanks a lot.
- Next message: honeybee: "How to get the index of a selected intem in the listbox?"
- Previous message: Nicholas Paldino [.NET/C# MVP]: "Re: it used to be a simple program in VB6 :("
- Next in thread: Nicholas Paldino [.NET/C# MVP]: "Re: Help with custom Serialization"
- Reply: Nicholas Paldino [.NET/C# MVP]: "Re: Help with custom Serialization"
- Messages sorted by: [ date ] [ thread ]