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();