是否可以将自定义对象的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()来确定实际类型很简单。这应该允许序列化发生,不是吗?
我也知道如何绕过这个执行一些自定义序列化。这只是一种痛苦,这似乎不会起作用,因为它对于更简单的情况来说是最方便的。
有什么想法吗?
答案 0 :(得分:1)
如果您使用的是XML序列化,则可以使用XmlArrayItem属性。
[XmlArray("Items")]
[XmlArrayItem("A.Thing",typeof(Thing))]
[XmlArrayItem("A.Different.Thing",typeof(Whatzit))]
public System.Collections.ArrayList List;
这要求您知道编译时ArrayList中可能存在的不同类型。