2009-02-18 76 views
1

是否可以将自定义对象的ArrayList保存到应用程序用户设置而不诉诸自定义序列化?将自定义对象的ArrayList保存为用户设置

例如,假定只含公共的get/set属性和私人支持字段基本数据类:

[Serializable] 
class SimpleClass() 
{ 
    ... 
} 

当我运行的代码下面,然后重新启动应用程序,ArrayList中设置命名MYLIST始终为空,即没有保存。

if (Properties.Settings.Default.MyList==null) 
{ 
    Properties.Settings.Default.MyList=new ArrayList(); 
} 

Properties.Settings.Default.MyList.Add(new SimpleClass(DateTime.Now.ToString())); 

Properties.Settings.Default.Save(); 

我意识到一个ArrayList没有输入,即。它拥有一组对象。但是,在每个对象上使用GetType()来确定实际类型很简单。这应该允许序列化发生,不是吗?

我也知道如何解决这个执行一些自定义序列化。这只是一种看起来不起作用的痛苦,因为它对于更简单的情况来说是最方便的。

任何想法?

回答

1

如果您使用的是XML序列化,则可以使用XmlArrayItem属性。

[XmlArray("Items")] 
[XmlArrayItem("A.Thing",typeof(Thing))] 
[XmlArrayItem("A.Different.Thing",typeof(Whatzit))] 
public System.Collections.ArrayList List; 

这要求您知道编译时可能存在于ArrayList中的不同类型。

相关问题