Я ищу способ перенести объекты Silverlight на компьютер пользователя, а затем повторно увлажнить их, чтобы пользователь мог закончить их редактирование.Проблема сериализации/десериализации Silverlight
Последовательный с DataContractSerializer
и сохраняющийся до IsolatedStorageFile
работает отлично. Однако десериализация вызывает проблему. Вот код, который вызывает сбой:
private string _FirstNames = string.Empty;
public string FirstNames
{
get { return _FirstNames; }
set
{
new PersonNameValidator().Validate(value); //<-- BOOM 8(
Set(ref _FirstNames, value,() => this.FirstNames);
}
}
deserialiser называет свойство сеттера, который, в свою очередь, вызывает исключение и ликвидирует десериализацию.
Я попытался явно применение DataContract
/DataMember
/IgnoreDataMember
атрибутов, но тогда это не дружит с частными полями:
System.Security.SecurityException произошло Message = "Тип контракта данных «Trident.Model.Journey.JourneyApplication» не может быть сериализовать, потому что член «_TravellerSavingsAmount» является не публичный. Заставить член общественного будет исправить эту ошибку. С другой стороны, вы можете сделать его внутренним и использовать атрибут InternalsVisibleToAttribute на вашей сборке, чтобы включить сериализацию внутренних элементов . см. документацию для более подробной информации. Будьте знают, что делать это имеет определенные последствия безопасности.»
Как я могу обойти сеттеры недвижимость во десериализация?
Я хотел бы, чтобы мои занятия, ориентированные на домен, и не слишком загрязнены с проблемами инфраструктуры
Благодаря Joel. Я рассмотрел первый момент, но не люблю идею добавления дополнительных общедоступных свойств/полей только для поддержки сериализации. Что касается использования производных классов: это может стать громоздким, поскольку мои объектные графы увеличиваются по сложности. Я не хочу писать пользовательскую подпрограмму для обработки каждого графа объектов, который я создаю. –