such exception is thrown when your class doesn't have a logic schema for being serialized..
I tried some codes,like you I received that exception when I wanted to serialize a ListViewItem object besides this fact it implements ISerializable,I don't know why?????
anyway there are other solutions!
Code:
[C#]
public class Item
{
[XmlAttribute("amount")]public string amount;
[XmlAttribute("description")]public string Description;
[XmlAttribute("TheDate")]public DateTime TheDate;
[XmlAttribute("Total")]public decimal Total;
public Item(string amount,string description,DateTime theDate,decimal total)
{
this.amount=amount;
this.Description=description;
this.TheDate=theDate;
this.Total=total;
}
public Item(){}
//other business functions
}
[XmlRoot("root")]
public class ListItems
{
[XmlElement("item")]public Item[] Items;
public ListItems(Item[] items)
{
Items=items;
}
public ListItems(){}
//returns an array of ListViewItem
public ListViewItem[] PopulateListView()
{
IList list=new ArrayList();
foreach(Item item in Items)
{
string[] s={item.amount,item.Description,item.TheDate.ToString(),item.Total.ToString()};
ListViewItem listViewItem=new ListViewItem(s);
list.Add(listViewItem);
}
ListViewItem[] result=new ListViewItem[list.Count];
list.CopyTo(result,0);
return result;
}
//write other methods...
}
then to use
Code:
[C#]
private void serlist()
{
Item item1=new Item("1","ar",DateTime.Now,12);
Item item2=new Item("2","az",DateTime.Now,13);
Item item3=new Item("3","ak",DateTime.Now,14);
ListItems items=new ListItems(new Item[]{item1,item2,item3});
XmlSerializer xs=new XmlSerializer(typeof(ListItems));
StreamWriter write=new StreamWriter(@"C:\testlist.xml");
xs.Serialize(write,items);
write.Close();
listView1.Items.AddRange(items.PopulateListView());
}
private void desrila()
{
XmlSerializer xs=new XmlSerializer(typeof(ListItems));
Stream stream=new FileStream(@"C:\testlist.xml",FileMode.OpenOrCreate);
ListItems items=(ListItems)xs.Deserialize(stream);
listView1.Items.AddRange(items.PopulateListView());
}
should be self explanatory,
also you can work with
DataSet.
_____________
Mehdi.
software student.