【问题标题】:Properties.Settings.Default Custom Listtype is not saved!Properties.Settings.Default 自定义列表类型未保存!
【发布时间】:2011-04-06 13:32:28
【问题描述】:

嘿,今天发现了设置类 Properties.Settings.Default 和保存字符串等工作得很好,但是当我想保存我创建的自定义列表时它不起作用。即使 appdata 配置文件中有一个具有空值节点的条目,该列表也始终为空。 该列表继承自 ObservableCollection,其中 blabla 具有 Size(类型大小)和 name(类型字符串)属性。有人可以帮帮我吗?

【问题讨论】:

  • 我的意思是继承自 ObservableCollection 其中 blabla 具有 Size(类型大小)和 name(类型字符串)属性..

标签: c# .net visual-studio-2010 settings


【解决方案1】:

我加了

[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)]

到设置类(Settings.settings)中的属性:

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)]
public global::TestWpfApplication.EtikettDimensionList Dimensions 
{
    get 
    {
        return ((global::TestWpfApplication.EtikettDimensionList)(this["Dimensions"]));
    }
    set
    {
        this["Dimensions"] = value;
    }
}

这将以二进制格式序列化对象。如果你想要 XmlFormat,你必须为所有类实现 XML 序列化。

【讨论】:

  • 如果你写了类型,那么类上应该有一个[Serializable] 属性。如果它是框架中的一个类,它将在帮助中提及,最后在所有其他情况下,您可以使用 Reflector 来检查属性。
  • 我已将可序列化属性设置为列表和'blabla',仍然不起作用!
  • codepublic class EtikettDimensionList : ObservableCollection { } [Serializable] public class EtikettDimension { public string Name { get;放; } 公共尺寸尺寸 { 得到;放; } public EtikettDimension(string name, Size size) { this.Name = name; this.Size = 大小; } 公共覆盖字符串 ToS​​tring() { return Name + " " + Size.ToString(); } }code
  • 知道了。在我的回答中查看我的编辑。
  • 嘿,Erno,抱歉来晚了!今天又试了一次,现在它可以工作了(使用可序列化的属性)。感谢您的真棒帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多