快速业务通道

prism v2之旅(7)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19

这篇继续介绍Module的功能.

第5篇已经介绍过模块的一些基本功能了,这篇介绍模块在silverlight的特殊应用.

silverlight的项目生成文件是xap文件,其提供了一个非常方便的功能,即相互的xap文件可以相互加载,就如flash的swf文件一样可以动态加载.建议你在看下去之前先看一下TerryLee写的这两篇文章

这里我简单的总结一下silverlight程序初始化的步骤.总目标是要拿到xap里面的UserControl

1.先加载xap文件,xap文件包括一个xaml文件和一堆相关的dll(这里就可以知道dll越多,加载速度越慢了)

2.找到入口点主程序,看Deployment节点的两个属性,一个是程序集,一个是App入口点.然后就可以通过反射初始化了.

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      EntryPointAssembly="RemoteModuleLoading.Silverlight"
      EntryPointType="RemoteModuleLoading.Silverlight.App"
      RuntimeVersion="2.0.31005.0">
 <Deployment.Parts>
  <AssemblyPart x:Name="RemoteModuleLoading.Silverlight" Source="RemoteModuleLoading.Silverlight.dll" />
  <AssemblyPart x:Name="Infrastructure.Silverlight" Source="Infrastructure.Silverlight.dll" />
  <AssemblyPart x:Name="Microsoft.Practices.Composite.Silverlight" Source="Microsoft.Practices.Composite.Silverlight.dll" />
  <AssemblyPart x:Name="Microsoft.Practices.Composite.UnityExtensions.Silverlight"
         Source="Microsoft.Practices.Composite.UnityExtensions.Silverlight.dll" />
  <AssemblyPart x:Name="Microsoft.Practices.Unity" Source="Microsoft.Practices.Unity.dll" />
  <AssemblyPart x:Name="Microsoft.Practices.ServiceLocation.Silverlight"
         Source="Microsoft.Practices.ServiceLocation.Silverlight.dll" />
  <AssemblyPart x:Name="Microsoft.Practices.Composite.Presentation.Silverlight"
         Source="Microsoft.Practices.Composite.Presentation.Silverlight.dll" />
  <AssemblyPart x:Name="System.Windows.Controls" Source="System.Windows.Controls.dll" />
 </Deployment.Parts>
</Deployment>

那么加载外部的xap文件该如何做呢?

1.先下载好要加载的xap文件

2.然后再读取xap的那个xaml文件

3.反射加载dll文件,拿到我们想要的内容.

我想大致应该是如此,prism对此功能进行了一些封装.让我们来看看prism是如何实现这一功能的.

模块组功能(ModuleInfoGroup)

prism v2添加一个模块组的功能,我们可以来看一下下面的类图关系.

prism v2之旅(7)

1.ModuleCatalog是一个模块集合,Items是其默认的集合属性,Item的类型是IModuleCatalogItem,该接口是一个空实现,作为一个标识作用,ModuleInfoGroup和ModuleInfo实现了这个接口,这就可以实现同时添加这两个类型到集合里面.

public Collection<IModuleCatalogItem> Items
{
  get { return items; }
}

那么ModuleCatalog的ModuleInfo集合便是ModuleInfoGroup和ModuleInfo的并集.

以xaml文件代替app.config配置文件来加载模块

.

xaml文件有个好处,可以加载xaml文件,然后可以将在xaml文件转成你需要的对象.这也是这

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号