将自定义对象的ArrayList保存到用户设置

时间:2009-02-18 06:53:41

标签: c# .net serialization settings

是否可以将自定义对象的ArrayList保存到应用程序用户设置而无需借助自定义序列化?

例如,给定一个仅包含公共get / set属性和私有支持字段的基本数据类:

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

当我在代码中运行以下代码,然后重新启动应用程序时,名为MyList的ArrayList设置始终为null,即它未保存。

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 个答案:

答案 0 :(得分:1)

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

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

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