Проблема сериализации AppFabric

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

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

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

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

Спасибо.


person mehmetilker    schedule 15.01.2011    source источник


Ответы (2)


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

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

person Drew Marsh    schedule 14.02.2011

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

person karlis    schedule 15.01.2011
comment
Да, я уже пробовал то, что вы сказали, и это работает. но, как я уже сказал, я не хочу удалять атрибут DataContact и не хочу отмечать все члены элементом данных. Спасибо. - person mehmetilker; 17.01.2011