Проблема сериализации AppFabric - PullRequest
0 голосов
/ 15 января 2011

Я пытаюсь кэшировать экземпляр класса с помощью AppFabric, но он возвращает экземпляр класса с пустыми членами.Причина в атрибуте DataContract.Мой класс помечен атрибутами [Serializable] и [DataContract (Name = "TestClass", Namespace = "CustomNameSpace.TestClass")].

Решение проблемы, если я отмечу все свойства с помощью DataMember или удалим атрибут DataContract.

Но я не хочу удалять атрибут DataContract из-за других потребностей сериализации (таких как json или что-то еще), или я не хочу добавлять атрибут DataMember к другим классам.(много)

У вас есть идея решить эту проблему?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2011

Правила механизма сериализации предпочитают сериализацию DataContractAttribuee устаревшему SerializableAttribute. Поскольку вы пометили свой класс с помощью DataContractAttribute, он попытается использовать DCS. Наличие DataContractAttribute в вашем классе без указания каких-либо DataMemberAttributes для ваших свойств совершенно бесполезно и, как вы можете видеть, просто вредит вам, потому что механизм сериализации ожидает, что вы будете следовать правилам.

Ваши единственные варианты заставить это работать, это либо применить соответствующие DataMemberAttributes к вашим свойствам, либо удалить DataContractAttribute.

0 голосов
/ 15 января 2011

в моих классах я только что использовал атрибут [Serializable] для класса, ничего для членов. это работает как шарм с кешем appfabric.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...