Как вы сериализуете ScriptObjects в JSON для сохранения в изолированном хранилище Silverlight?
-
02-07-2019 - |
Вопрос
Согласно этой статье Silverlight 2 Бета-версия 2 поддерживает DataContractJsonSerializer
объект.Но, когда я пытаюсь его использовать, VS говорит
"Тип 'DataContractJsonSerializer' не определен".
У меня есть метод, помеченный как ScriptableMember, который вызывается из JavaScript и передается объекту.Внутри этого метода мне нужно сериализовать объект в строку (предпочтительно JSON), а затем сохранить его в изолированном хранилище.
Действительно ли Silverlight 2 Beta 2 поддерживает DataContractJsonSerializer?Или кто-нибудь порекомендовал бы другой метод сохранения созданного JavaScript ScriptObject в Изолированном хранилище?
Решение
На самом деле ответ таков: DataContractJsonSerializer является частью Silverlight 2 Beta 2, но вам нужно добавить ссылку на System.ServiceModel.Перейдите в свой проект Silverlight, чтобы использовать его.
Я не понимал, что вам все еще нужно добавлять ссылки на dll в Silverlight.Я думал, что это автоматически включает все аналогично тому, как это делает ASP.NET.
Другие советы
Существует версия Json Silverlight.NET, которая сериализует ваши объекты в JSON.Для этого не требуются атрибуты [DataContract] и [DataMember] для всех ваших объектов.
На данный момент единственное решение этой проблемы, которое я нашел, - это использовать ASP.NET AJAX JavaScriptSerializer для выполнения сериализации / десериализации JSON в JavaScript, а затем просто используйте Silverlight для сохранения / извлечения результирующей строки.
Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);
Я бы сказал, что ваш собственный ответ был бы лучшим подходом.JavaScript очень медленно справляется с подобными вещами, поэтому лучше всего оставить часть сериализации для ASP.NET.