Unser Team hat gewählt Couchbase als Cache für unsere Anwendung. Was wir in diesem Cache speichern, sind Objekte, die so aussehen
public class CatalogEntity
{
public int Id { get; set; }
public string Name { get; set; }
// this property gives us trouble
public Hashtable Attributes { get; set;}
}
Nach dem Abrufen eines Objekts aus dem CouchBase-Cache habe ich in unserem Code festgestellt, dass die Eigenschaften der primären Typen (Id
und Name
) ordnungsgemäß deserialisiert sind, aber die Attributes
von Hashtable
Typ wird nicht deserialisiert und bleibt als JSON. Zum Beispiel, wenn ich sowas habe
var entity = new CatalogEntity();
entity.Attributes["foo"] = new Foo();
Das Objekt aus dem Cache wird haben Attributes["foo"]
Eigenschaft als JSON-Darstellung der Foo
Klasse.
Ich frage mich, wie man das hat Hashtable
Typisch serialisieren / deserialisiert? Soll ich das Objekt in eine Binärdatei serialisieren und stattdessen einen binären Stream in der CouchBase speichern?
Antworten:
0 für die Antwort № 1Gibt es einen Grund, den Sie verwenden müssen? Hashtable
? Können Sie zum Beispiel eine Dictionary<string,string>
stattdessen?
Ich denke, der Grund für das, was Sie sehen, ist der beste Versuch von Json.NET, eine Hashtabelle zu serialisieren (siehe auch diese Frage zu StackOverflow: Hashtable mit Json.Net serialisieren).