prism v2之旅(7)
这篇继续介绍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添加一个模块组的功能,我们可以来看一下下面的类图关系. 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |