突破 Silverlight 自身限制, 做更好的动态加载导航机制(一)

简介:

Silverlight 对反射的限制

在 Silverlight 中, 对反射做了很多的限制, 最大的两个限制是:

Silverlight 对动态加载的限制

Silverlight 对动态加载的机制支持很差, 主要表现在:

  • 没有提供内置的动态加载程序集的方案, 需要开发者自己实现, 当然, 从服务端加载一个程序集很容易, 但是没有好的办法获取到程序及的引用信息, 不能自动加载程序集引用的其它程序集;
  • 不能将动态加载到的程序集添加到当前的 Silverlight 部署程序集缓存中 (Deployment.Current.Parts) 中, 需要开发者自己对已经加载的程序及做缓存;
  • AppDomain.Current 不能添加动态加载的程序集信息。

Silverlight 内置导航机制的限制

Silverlight 内置了一种导航机制, 可以和浏览器导航栏无缝集成, 但是也有不少限制, 例如:

  • 导航的地址必须是用户控件 (UserControl) 或者页面 (Page) 对应的 xaml 文件, 不能是其它的用户控件;
  • 由于 Silverlight 对反射以及动态加载的限制, 内置的导航机制不能自动加载动态加载的程序集中的控件;

不过,内置的导航可以通过实现 INavigationContentLoader 接口来完成, Frame 控件有一个 ContentLoader 属性, 这个属性的默认值是PageResourceContentLoader 。

比较理想解决方案

比较理想的解决方案是, 将导航机制和动态加载程序集结合起来, 要实现的目标如下:

  1. Silverlight 程序集都不打包, 直接复制到 clientbin 目录下, 当然, 主程序集还是要打包的, 否则客户端 Silverlight 无法加载加载;
  2. 根据用户的选择, 从服务端按需加载对应程序集, 同时自动分析引用的程序集, 也自动从服务端加载;
  3. 扩展内置的导航机制, 使其能够载入动态加载的程序集。

写到这里, 相信有很多人对这个解决方案已经了解了, 甚至已经有了清晰地思路来实现了, 在下一篇博文中, 将贴出我的实现, 希望大家继续关注。

张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

本博客已经迁移到 GitHub , 围观地址: http://beginor.github.io/

本文转自张志敏博客园博客,原文链接:http://www.cnblogs.com/beginor/archive/2011/06/23/2088033.html ,如需转载请自行联系原作者
相关文章
|
前端开发 C#
silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发)
原文:silverlight,WPF动画终极攻略之番外 3D切换导航篇(Blend 4开发) 这篇介绍的是3D导航,点击图标,页面360°翻转的效果!有什么不足的欢迎大家指出来。 1.新建一个usercontrol,命名为menu. 2.按照下图设置一下属性。
1219 0

热门文章

最新文章