2011-01-15 4 views
0

Ich versuche, eine Klasseninstanz mit AppFabric zwischenzuspeichern, aber es gibt Klasseninstanz mit leeren Mitgliedern zurück. Der Grund ist DataContract-Attribut. Meine Klasse ist mit [Serializable] und [DataContract (Name = "TestClass", Namespace = "CustomNameSpace.TestClass")] Attribute gekennzeichnet.AppFabric Serialisierungsproblem

Problemlösung, wenn ich alle Eigenschaften mit DataMember markieren oder DataContract-Attribut entfernen.

Aber ich möchte nicht DataContract Attribut wegen anderer Serialisierungsanforderungen (wie json oder etwas anderes) entfernen oder ich möchte nicht DataMember Attribut zu anderen Klassen hinzufügen. (viele)

Haben Sie eine Idee, um dieses Problem zu lösen?

Danke.

Antwort

0

In meinen Klassen habe ich nur das [Serializable] -Attribut für die Klasse verwendet, nichts auf den Mitgliedern. es funktioniert wie ein Charme mit AppFabric Cache.

+0

Ja, ich habe schon versucht, was Sie gesagt haben und es funktioniert. Aber wie gesagt, ich möchte das DataContact-Attribut nicht entfernen und möchte nicht alle Mitglieder mit Datenmember markieren. Vielen Dank. – mehmetilker

2

Die Regeln der Serialisierungs-Engine bevorzugen die Serialisierung von DataContractAttribuee in das Legacy-SerializableAttribute. Da Sie Ihre Klasse mit DataContractAttribute markiert haben, wird versucht, DCS zu verwenden. Wenn Sie das DataContractAttribute für Ihre Klasse verwenden, ohne DataMemberAttributes für Ihre Eigenschaften anzugeben, ist das völlig nutzlos. Sie sehen, dass es Sie nur verletzt, weil die Serialisierungs-Engine erwartet, dass Sie die Regeln befolgen.

Die einzige Möglichkeit, dies zum Laufen zu bringen, besteht darin, entweder die entsprechenden DataMemberAttributes auf Ihre Eigenschaften anzuwenden oder das DataContractAttribute zu entfernen.

Verwandte Themen