| 

.NET C# Java Javascript Exception

3
Hi,

ich möchte gerne eine Liste von Objekten als XML Konstrukt in meinem Settings speichern.
Ich habe ein System.Xml.XmlDocument in meiner Settings.settings erstellt und würde jetzt gerne List<MyClass> dort speichern, ohne jetzt einen eigene Methode schreiben zu müssen, die aus den Objekten und XML und vice versa macht...

Wie gehe ich da vor? Im Web finde in ch nur Beispiele um einen XML direkt in eine Datei zu serialisieren, aber dass ist ja nicht Ziel der Übung...

gruss Dave
News:
15.10.2013
david.koenig09 173 6
Muss es denn XML sein, oder ist auch Json okay? Wenn ja, dann schau dir mal newtonsoft (http://james.newtonking.com/json / http://www.nuget.org/packages/Newtonsoft.Json/) an.
Mario Priebe 20.11.2013
1 Antwort
1
Dein Ansatz, wenngleich bestimmt gut gemeint, ist aus meiner Sicht eher der falsche Weg.
Die Settings werden schon als XML gespeichert, also besteht keine Not dafür, diese vorher noch einmal in XML zu serialisieren.

Nun zu einem Weg, welchen ich hier gern verfolge:
Erweiterung der Settings-Klasse des Projektes um eine neue Setting.
Das Tolle der Settings-Klasse: Sie ist als partial markiert, kann also (mehr oder minder) problemlos erweitert werden.
Dazu legst du dir eine (Erweiterungs-)Klasse an, welche in Etwa wie folgt aussehen könnte:
/// <summary>
/// Erweitert die vom Designer generierten Settings so dass
/// eine Liste gespeichert werden kann.
/// </summary>
partial class Settings
{
[UserScopedSetting]
[SettingsSerializeAs(SettingsSerializeAs.Xml)]
[DefaultSettingValue("")]
public List<MyClass> ListOfMyClass
{
get { return this["ListOfMyClass"] as List<MyClass>; }
set { this["ListOfMyClass"] = value; }
}
}
15.10.2013
Karill Endusa 1,5k 1 9
Hi,

soweit hab ich das verstanden. Aber was ich noch nicht verstehe ist, wie kann jetzt .NET wissen, wie meine Liste mit irgendwelchen Objekten drinnen in XML (also der Config) dargestellt werden müssen?


Ich habe das jetzt mal genauso umgesetzt unn in der Configu Datei landet nun auch nur der folgende Inhalt, obwohl ich versuche eine gefüllte Liste dort zu speichern:

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

Irgendwie muss ich doch in MyClass noch definieren, wie in der XML was auszusehen hat, oder?

Gruss Dave
david.koenig09 17.10.2013
Rein technisch nicht... die XML-Serialisierung nutzt an sich die Property-Namen/Namen der public Variablen.
Man kann über Attribute (XmlAttribute, XmlArray etc.) daran noch ein klein wenig rumspielen.
Was jedoch dein Problem angeht: Es gibt klassen (KeyValuePair, Dictionary, Image usw.) welche standardmäßig nicht (nach XML) serialisierbar sind. Könnte es daran liegen?
Karill Endusa 21.10.2013

Stelle deine .net-Frage jetzt!