I have the following code. When I serialize the DriverCollectio n I would
like to get both the Driver Collection and the DeletedItems collection. I
end up with only the Driver collection. I have tried numerous attributes
with no success. Any help would be appreciated...
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Seri alization;
using System.Runtime. Serialization;
using System.Runtime. Serialization.F ormatters.Binar y;
using System.Collecti ons;
namespace SerialTest
{
#region BusinessObjectB ase
/// Summary description for BusinessObjectB ase.
/// </summary>
[Serializable()]
public abstract class BusinessObjectB ase
{
public BusinessObjectB ase()
{}
}
#endregion //BusinessObjectB ase
#region BusinessObjectC ollectionBase
/// <summary>
/// Summary description for BusinessObjectC ollectionBase.
/// </summary>
[Serializable()]
public class BusinessObjectC ollectionBase : CollectionBase
{
public DeletedItemColl ection _deletedItems = new DeletedItemColl ection();
public BusinessObjectC ollectionBase()
{}
public DeletedItemColl ection DeletedItems
{
get{return _deletedItems;}
set{_deletedIte ms = value;}
}
}
#endregion //BusinessObjectC ollectionBase
#region DeletedItemColl ection
/// <summary>
/// Summary description for BusinessObjectC ollectionBase.
/// </summary>
[Serializable()]
public class DeletedItemColl ection : CollectionBase
{
#region Constructors
public DeletedItemColl ection()
{}
#endregion
public BusinessObjectB ase this[int index]
{
get{return (BusinessObject Base)List[index];}
set{List[index] = value;}
}
public int Add(BusinessObj ectBase value)
{
return List.Add(value) ;
}
}
#endregion //DeletedItemColl ection
#region DriverCollectio n
/// <summary>
/// Summary description for DriverCollectio n.
/// </summary>
[Serializable()]
public class DriverCollectio n : BusinessObjectC ollectionBase
{
#region Constructors
public DriverCollectio n()
{}
#endregion
#region IListMethods
public Driver this[int index]
{
get{return (Driver)List[index];}
set{List[index] = value;}
}
public int Add(Driver value)
{
return List.Add(value) ;
}
public bool Contains(Driver value)
{
return List.Contains(v alue);
}
public bool Contains(int driverNumber)
{
Driver d = GetDriver(drive rNumber);
return d == null ? false : Contains(d);
}
public bool ContainsDeleted (int driverNumber)
{
foreach(Busines sObjectBase bob in _deletedItems)
{
Driver d = (Driver)bob;
if(d.Number == driverNumber)
return true;
}
return false;
}
public int IndexOf(Driver value)
{
return List.IndexOf(va lue);
}
public int IndexOf(int driverNumber)
{
Driver d = GetDriver(drive rNumber);
return d == null ? -1 : IndexOf(d);
}
public void Remove(Driver value)
{
List.Remove(val ue);
}
public Driver GetDriver(int driverNumber)
{
for(int i = 0; i < this.Count; i++)
if(this[i].Number == driverNumber)
return this[i];
return null;
}
public void DeleteDriver(in t driverNumber)
{
Driver d = GetDriver(drive rNumber);
Remove(d);
_deletedItems.A dd(d);
}
#endregion
}
#endregion //DriverCollectio n
#region Driver
/// <summary>
/// Summary description for Driver.
/// </summary>
[Serializable()]
public class Driver : BusinessObjectB ase
{
#region Constructors
public Driver()
{
}
#endregion
#region Number
int _number = 0;
public int Number
{
get{return _number;}
set
{
if(value != _number)
{
_number = value;
}
}
}
#endregion
}
#endregion //Driver
/// <summary>
/// Summary description for Class1.
/// </summary>
class Tester
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
DriverCollectio n drivers = new DriverCollectio n();
Driver driver1 = new Driver();
Driver driver2 = new Driver();
Driver driver3 = new Driver();
Driver driver4 = new Driver();
driver1.Number = 1;
drivers.Add(dri ver1);
driver2.Number = 2;
drivers.Add(dri ver2);
driver3.Number = 3;
drivers.Add(dri ver3);
driver4.Number = 4;
drivers.Add(dri ver4);
drivers.DeleteD river(2);
drivers.DeleteD river(3);
//*************** *************
// XML serialization
//*************** *************
// Creat a Serializer
try
{
XmlSerializer serializer = new XmlSerializer(t ypeof(DriverCol lection));
// Create an XmlTextWriter using a FileStream.
Stream fs = new FileStream(@"C: \NewPolicy.xml" , FileMode.Create );
XmlWriter writer =
new XmlTextWriter(f s, Encoding.Unicod e);
// Serialize using the XmlTextWriter.
serializer.Seri alize(writer, drivers);
writer.Close();
}
catch (System.Excepti on e)
{
throw e;
//Handle exception here
}
}
}
}
--
Gonzo