Question

Problème:. Lorsque la mise en cache une instance d'une classe et d'obtenir immédiatement de retour de cache, je reçois le dos d'objet (sa non nulle), mais toutes ses propriétés / champs sont nuls ou par défaut

    _cacheHelper.PutInCache("testModuleControlInfoOne", mci);
    //mci has populated fields

    var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
    //mciFromCacheOne now has null or default fields

Je suppose que la façon dont l'objet est structuré est le problème et AppFabric ne sérialisation l'objet correctement pour une raison quelconque.

Quand j'utilise la méthode de sérialisation suivante cependant, je reçois le dos d'objet avec toutes les propriétés / champs comme ils l'étaient avant sérialisation.

    public T SerializeThenDeserialize<T>(T o) where T : class
    {
            BinaryFormatter bf = new BinaryFormatter();

            using (MemoryStream ms = new MemoryStream())
            {
                bf.Serialize(ms, o);

                ms.Position = 0;

                return (T)bf.Deserialize(ms);
            }
    }

Comment un serialize objet et désérialiser correctement en utilisant le formatter binaire et ne pas faire exactement la même chose via la mise en cache?

Quelqu'un at-il rencontré ce ou que quelqu'un a des suggestions ou des conseils sur ce qu'il faut généralement pour?

Était-ce utile?

La solution

Ok trouvé.

L'objet mis en œuvre IXmlSerializable si AppFabric utilisé qu'au lieu de la sérialisation régulière.

Son exécution par un XmlSerializer (au lieu d'un BinaryFormatter) donne les mêmes champs vides que je ressentais.

Il semble que la mise en œuvre IXmlSerializable a des problèmes.

Autres conseils

Je crois que lors de la sérialisation à Xml (en utilisant IXmlSerializable), les champs privés d'un objet sont ignorés, ce qui peut être la raison pour laquelle votre objet était incomplet sur la récupération.

Utilisation binaire sérialisation assurera l'objet entier (y compris les références à d'autres objets) sont inclus.

Vous voudrez peut-être regarder IDataCacheObjectSerializer

http://msdn.microsoft.com/en-us /library/windowsazure/hh552969.aspx

AppFabric Caching - Puis-je spécifier sérialisation style utilisé pour tous les objets

(oui je me rends compte cette question était aussi le vôtre: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top