【问题标题】:Saving an ArrayList of custom objects to user settings将自定义对象的 ArrayList 保存到用户设置
【发布时间】:2010-10-08 06:53:15
【问题描述】:

是否可以在不借助自定义序列化的情况下将自定义对象的 ArrayList 保存到应用程序用户设置中?

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

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

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

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() 来确定实际类型很简单。这应该允许序列化发生,不是吗?

我也知道如何通过一些自定义序列化来解决这个问题。这只是一种痛苦,这似乎不起作用,因为它对于更简单的情况来说是迄今为止最方便的。

有什么想法吗?

【问题讨论】:

    标签: c# .net serialization settings


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 2013-03-02
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多