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信任它
首先,DataContractSerailiser对Silverlight 5来说并不是什么新鲜事,它以前就存在。
我相信,按字母顺序排列的节点是默认的。可以附加到每个串行化属性的DataMemberAttribute
有一个Order
属性,可以用来指定它们的显示顺序。