• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Visual Studio 2010中Silverligh实现页面动态装配(2)

发布: 2010-3-26 11:17 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 62次 | 进入软件测试论坛讨论

领测软件测试网

  Visual Studio 2010中Silverligh实现页面动态装配(2)  软件测试 

    .NET 4.0中提供了一个MEF框架用于开发支持插件的软件系统,幸运的是,Silverlight 4也支持MEF,这就使得我们可以很容易地实现页面的动态装配功能。

  下面简介一下此页面中的关键代码,首先,我们需要指定Home.xaml页面“需要”一个IMyPart部件,为此,我们给Home类添加以下属性,并且给其附加“[Import]”标记:

  [Import(typeof(IMyPart))] public IMyPart mypart { get; set; }

  在Home.xaml页面初次显示时,并不加载部件程序集,当用户点击按“我要编辑文本”按钮后,动态创建一个WebClient对象从Web网站上下载程序集:

  private void DownloadAssemblyAndCompose() { //获取程序集的URI string uri = Application.Current.Host.Source.AbsoluteUri; int index = uri.IndexOf("/ClientBin"); //找出根URL uriuri = uri.Substring(0, index) + "/MyParts/MyPageParts.dll"; WebClient client = new WebClient(); this.txtInfo.Text = "正在下载文本编辑器组件……"; client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); //启动异步下载 client.OpenReadAsync(new Uri(uri)); this.btnShowEditor.IsEnabled = false; //防止用户第二次启动下载…… }

  注意:在本示例中我们假设所有的可装配部件都放在Web网站的MyParts文件夹下,并且假设我们已经知道了要下载的程序集文件名。在实际项目中,我们可以设计一个用于扫描部件文件夹并向Silverlight客户端返回可装配部件的WCF Service,以允许真正“全动态”的装配工作。上述代码为WebClient的下载完毕事件(OpenReadCompletedEvent)挂接了一个事件响应方法,其中包容了本例最核心的功能代码:

  void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { //加载资源 AssemblyPart part = new AssemblyPart(); Assembly ass = part.Load(e.Result); //提取程序集 //创建Catalog AssemblyCatalog cata = new AssemblyCatalog(ass); CompositionContainer container = new CompositionContainer(cata); CompositionBatch bat = new CompositionBatch(); bat.AddPart(this); container.Compose(bat); //装配…… //显示装配好的页面组件 if (mypart != null) MyEditorContainer.Content = mypart; }

  上述代码中的关键在于下载程序集完成之后,从流中动态加载程序集,然后再调用MEF来装配部件。

  5 最后一步,在Web网站中创建一个专用的部件文件夹“MyParts”,将包容了可装配部件的程序集复制到这一文件夹下。

创建MyParts文件夹

  下图展示了示例项目运行时动态下载并组装页面的截图:

项目运行时动态

  从本示例看到,将MEF和WebClient组件结合起来,可以让我们实现Silverlight页面的“按需下载”和“动态组合”,充分展示了Silverlight 4的强大功能!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: Silverligh studio Studio visual Visual 动态 页面


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网