Сериализация XML в Silverlight 5 - PullRequest
1 голос
/ 24 ноября 2011

У меня на руках немного затруднения, с которым, надеюсь, вы сможете помочь.

Я разрабатывал приложение Silverlight для клиента в Silverlight 4. Однако стало очевидно, что мне нужно иметькнопка для полноэкранного режима.Это было прекрасно и здорово, но когда в полноэкранном режиме Silverlight 4 отключает большинство ваших клавиатурных вводов по соображениям безопасности ......., поэтому причина перехода в полноэкранный режим для упрощения ввода данных в ChildWindowForms стала бессмысленной.

Я должен отметить, что я не могу сделать это приложение из браузера из-за того, что ему приходится сидеть в Dynamics CRM 2011, чтобы получить контекст и идентификатор записи, в которой он находится.

Так началось моеforray into silverlight 5. Эта версия позволяет приложениям запускаться в браузере в режиме повышенного доверия.Ранее доступный только в режиме вне браузера.

Все шло отлично, я понял, что мне нужно получить сертификат для подписи кода, добавить несколько ключей реестра и пользователя, чтобы добавить сертификат в доверенныйиздатели и получил это работает.Круто.

Моя проблема возникла, когда я попытался запустить свое приложение, и у меня появилось исключение, подобное этому:

There is an error in XML document (1, 41). ---> System.TypeAccessException: 
Attempt by security transparent method to access security critical type failed.

На этом этапе все, что изменило код, было то, что я подписал свойпроекты с сертификатом.

Похоже, что в Silverlight 5 он не "доверяет" объекту XmlSerializer, который я использую для чтения в какой-либо конфигурации XML, и десериализации в объект .Net

После некоторого копаниякажется, в городе появился новый сериализатор для Silverlight 5, DataContractSerializer Так что я подумал, здорово, что я могу просто внести некоторые изменения в код сериализации, и все будет хорошо.К сожалению, это не так.

Кажется, что эта версия сериализатора на 33% быстрее в этой версии.Это происходит быстрее, потому что все узлы в XML должны быть в алфавитном порядке.Если они не в этом порядке, они читаются как ноль.(Если они окажутся в правильном положении, они будут прочитаны правильно.)

Так что мой вопрос таков. У меня нет выбора, кроме как реорганизовать все мои файлы конфигурации XML в алфавитном порядке для адаптации к этому новому Serialzer или есть способ использовать старый сериализатор XML и заставить Silverlight 5 доверять ему?

1 Ответ

1 голос
/ 24 ноября 2011

Прежде всего, DataContractSeriailiser не является новым для Silverlight 5. Он был там раньше.

Я считаю, что узлы в алфавитном порядке по умолчанию.DataMemberAttribute, который вы можете прикрепить к каждому сериализуемому свойству, имеет свойство Order, которое можно использовать для определения порядка, в котором они появляются.

...