c# – 使用ApplicationSettingsBase存储通用列表

前端之家收集整理的这篇文章主要介绍了c# – 使用ApplicationSettingsBase存储通用列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试保存列表< Foo>使用ApplicationSettingsBase,但即使填充了列表,它也只输出以下内容
  1. <setting name="Foobar" serializeAs="Xml">
  2. <value />
  3. </setting>

Foo定义如下:

  1. [Serializable()]
  2. public class Foo
  3. {
  4. public String Name;
  5. public Keys Key1;
  6. public Keys Key2;
  7.  
  8. public String MashupString
  9. {
  10. get
  11. {
  12. return Key1 + " " + Key2;
  13. }
  14. }
  15.  
  16. public override string ToString()
  17. {
  18. return Name;
  19. }
  20. }

如何启用ApplicationSettingsBase来存储List< Foo>?

解决方法

同意Thomas Levesque:

以下类已正确保存/读回:

  1. public class Foo
  2. {
  3. public string Name { get; set; }
  4.  
  5. public string MashupString { get; set; }
  6.  
  7. public override string ToString()
  8. {
  9. return Name;
  10. }
  11. }

注意:我不需要SerializableAttribute.

编辑:这是xml输出

  1. <WindowsFormsApplication1.MySettings>
  2. <setting name="Foos" serializeAs="Xml">
  3. <value>
  4. <ArrayOfFoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  6. <Foo>
  7. <Name>Hello</Name>
  8. <MashupString>World</MashupString>
  9. </Foo>
  10. <Foo>
  11. <Name>Bonjour</Name>
  12. <MashupString>Monde</MashupString>
  13. </Foo>
  14. </ArrayOfFoo>
  15. </value>
  16. </setting>
  17. </WindowsFormsApplication1.MySettings>

我使用的设置类:

  1. sealed class MySettings : ApplicationSettingsBase
  2. {
  3. [UserScopedSetting]
  4. public List<Foo> Foos
  5. {
  6. get { return (List<Foo>)this["Foos"]; }
  7. set { this["Foos"] = value; }
  8. }
  9. }

最后我插入的项目:

  1. private MySettings fooSettings = new MySettings();
  2.  
  3. var list = new List<Foo>()
  4. {
  5. new Foo() { Name = "Hello",MashupString = "World" },new Foo() { Name = "Bonjour",MashupString = "Monde" }
  6. };
  7.  
  8. fooSettings.Foos = list;
  9. fooSettings.Save();
  10. fooSettings.Reload();

猜你在找的C#相关文章