Silverlight 5中XML的序列化

本文关键字:序列化 XML Silverlight | 更新日期: 2023-09-27 18:15:33

我手头有点麻烦,希望你能帮忙。

我一直在为Silverlight4中的客户端开发Silverlight应用程序。然而,很明显,我需要一个按钮来允许全屏模式。这很好,但在全屏模式下,Silverlight 4出于安全原因禁用了大部分键盘输入。。。。。。。因此,为了更容易地将数据输入ChildWindowForms而使用全屏的原因变得毫无意义。

我应该指出的是,我不能让这个应用程序离开浏览器,因为它必须位于Dynamics CRM 2011中才能获得上下文和记录id。

我就这样开始了对银光的向往。此版本允许应用程序在提升信任模式下在浏览器中运行。以前只能作为浏览器外模式使用。

一切都很顺利,我已经知道我需要一个证书来签署我的代码,添加一些注册表项,以及用户向受信任的发布者添加证书,并使其正常工作。令人惊叹的

当我试图运行我的应用程序时,我的问题出现了,我得到了这样的异常:

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

在这一点上,所有改变代码的是我用证书签署了我的项目。

在Silverlight5中,它似乎不"信任"我用来读取某些XML配置并反序列化为.Net对象的XmlSerializer对象

经过一番挖掘,似乎有一个新的序列化程序可以为Silverlight 5做这件事,DataContractSerializer。所以我想,太好了,我可以修改一些序列化代码,一切都会好起来的。遗憾的是,情况并非如此。

这个版本的序列化程序似乎比这个版本快33%。它之所以更快,是因为XML中的所有节点都必须按字母顺序排列。如果它们不按此顺序排列,则读取为null。(如果它们恰好处于正确的位置,则它们将被正确读取。(

所以我的问题是我是否别无选择,只能将所有XML配置文件按字母顺序重新组织以适应这个新的序列化程序,或者是否有办法使用旧的XML序列化程序并使Silverlight 5信任它

Silverlight 5中XML的序列化

首先,DataContractSerailiser对Silverlight 5来说并不是什么新鲜事,它以前就存在。

我相信,按字母顺序排列的节点是默认的。可以附加到每个串行化属性的DataMemberAttribute有一个Order属性,可以用来指定它们的显示顺序。

相关文章: