Frage: Ich benutze eine serialisierbare Wörterbuchklasse, die Sie unter http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx finden, um ein Wörterbuch zu serialisieren. Was gut funktioniert, aber ich stoße auf ein lästiges Problem.Serialisierbares Wörterbuch, wie wird der Schlüsselname eingestellt?
<System.Xml.Serialization.XmlRoot("DataBase")> _
Public Class cDataBase
<System.Xml.Serialization.XmlNamespaceDeclarations()> _
Public ns As New System.Xml.Serialization.XmlSerializerNamespaces()
<System.Xml.Serialization.XmlElement("Tables")> _
Public Tables1 As New SerializableDictionary(Of String, cTable)
End Class ' cDataBase
Wenn ich serialisiert Instanzen der oben genannten Klasse, wie diese, die erzeugte XML wie folgt aussieht:
<Tables>
<item>
<key>
<string>MyTable</string>
</key>
<value>
<Table CreationDate="0001-01-01T00:00:00" LastModified="0001-01-01T00:00:00">
<Columns>
<Column Name="PrimaryKeyName">
<DataType>Uniqueidentifier</DataType>
<Length>36</Length>
</Column>
</Columns>
<Rows>
<Row>
<Item>Reihe1</Item>
<Item>Reihe2</Item>
<Item>Reihe3</Item>
</Row>
<Row>
<Item>Reihe1</Item>
<Item>Reihe2</Item>
<Item>Reihe3</Item>
</Row>
Welche wäre gut, wenn ich nur könnte herausfinden, wie der Schlüssel zum Umbenennen von <String> etwas in einem Attribut definiert
<key>
<string>MyTable</string>
</key>
im Grunde so etwas wie die XmlArrayItem Attribut, wie unten, wenn (nur) das Wörterbuch ein Array ist ...
<System.Xml.Serialization.XmlArray("Tables")> _
<System.Xml.Serialization.XmlArrayItem("Table")> _
Public Tables As New List(Of cTable)
ich von String geerbt, die ich mit einem Namen ausstatten könnte, String zu einer benutzerdefinierten Klasse zu ändern versuchen wollte aber das problem ist, man kann nicht von string erben ...
Erstens bin ich begrenzt auf .NET 2.0, und zweitens, das Hauptproblem ist, dass Wörterbuch ein generischer Typ ist und NICHT SERIALIZABLE (ebenfalls nicht in JSON). Ich bin in XML serialisieren, weil XML breiter verwendet wird, und besser zu lesen, wenn serialisiert von .NET 2.0. –