gpt4 book ai didi

c# - 使用 ApplicationSettingsBase 存储通用 List

转载 作者:太空狗 更新时间:2023-10-29 20:58:00 25 4
gpt4 key购买 nike

我正在尝试使用 ApplicationSettingsBase 保存一个 List ,但是即使列表已填充,它也只输出以下内容:

<setting name="Foobar" serializeAs="Xml">
<value />
</setting>

Foo 定义如下:

[Serializable()]
public class Foo
{
public String Name;
public Keys Key1;
public Keys Key2;

public String MashupString
{
get
{
return Key1 + " " + Key2;
}
}

public override string ToString()
{
return Name;
}
}

如何启用 ApplicationSettingsBase 来存储 List

最佳答案

同意 Thomas Levesque 的观点:

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

public class Foo
{
public string Name { get; set; }

public string MashupString { get; set; }

public override string ToString()
{
return Name;
}
}

注意:我不需要SerializableAttribute

编辑:这是 xml 输出:

<WindowsFormsApplication1.MySettings>
<setting name="Foos" serializeAs="Xml">
<value>
<ArrayOfFoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Foo>
<Name>Hello</Name>
<MashupString>World</MashupString>
</Foo>
<Foo>
<Name>Bonjour</Name>
<MashupString>Monde</MashupString>
</Foo>
</ArrayOfFoo>
</value>
</setting>
</WindowsFormsApplication1.MySettings>

以及我使用的设置类:

sealed class MySettings : ApplicationSettingsBase
{
[UserScopedSetting]
public List<Foo> Foos
{
get { return (List<Foo>)this["Foos"]; }
set { this["Foos"] = value; }
}
}

最后我插入的项目:

private MySettings fooSettings = new MySettings();

var list = new List<Foo>()
{
new Foo() { Name = "Hello", MashupString = "World" },
new Foo() { Name = "Bonjour", MashupString = "Monde" }
};

fooSettings.Foos = list;
fooSettings.Save();
fooSettings.Reload();

关于c# - 使用 ApplicationSettingsBase 存储通用 List<CustomObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/868217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com