prism v2之旅(7)
篇要讲的重点.
我们先来看一下xaml的配置文件 <Modularity:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:Modularity="clr-namespace:Microsoft.Practices.Composite.Modularity;assembly=Microsoft.Practices.Composite.Silverlight"> <Modularity:ModuleInfoGroup Ref="ModuleX.Silverlight.xap" InitializationMode="OnDemand"> <Modularity:ModuleInfo ModuleName="ModuleX" ModuleType="ModuleX.ModuleX, ModuleX.Silverlight, Version=1.0.0.0" /> </Modularity:ModuleInfoGroup> <Modularity:ModuleInfoGroup Ref="ModulesWY.Silverlight.xap" InitializationMode="WhenAvailable"> <Modularity:ModuleInfo ModuleName="ModuleY" ModuleType="ModuleY.ModuleY, ModulesWY.Silverlight, Version=1.0.0.0"> <Modularity:ModuleInfo.DependsOn> <sys:String>ModuleW</sys:String> </Modularity:ModuleInfo.DependsOn> </Modularity:ModuleInfo> <Modularity:ModuleInfo ModuleName="ModuleW" ModuleType="ModuleW.ModuleW, ModulesWY.Silverlight, Version=1.0.0.0"> </Modularity:ModuleInfo> </Modularity:ModuleInfoGroup> <!-- Module info without a group --> <Modularity:ModuleInfo Ref="ModuleZ.Silverlight.xap" ModuleName="ModuleZ" ModuleType="ModuleZ.ModuleZ, ModuleZ.Silverlight, Version=1.0.0.0" /> </Modularity:ModuleCatalog> 定义好配置文件以后重写Bootstrapper的GetModuleCatalog方法,这个Bootstrapper已经提很多遍了,用ModuleCatalog的静态方法CreateFromXaml创建IModuleCatalog对象 protected override IModuleCatalog GetModuleCatalog() { return ModuleCatalog.CreateFromXaml( new Uri("/RemoteModuleLoading.Silverlight;component/ModulesCatalog.xaml", UriKind.Relative)); } Xap模块加载器 在模块初始化的时候,有一个IModuleTypeLoader的接口,该接口在wpf和silverlight的实现不同. wpf的实现就直接去加载dll即可.silverlight的实现刚开始上面已经解释过了 下载xap==>扫描xaml文件的ModuleDeployment的Parts的配置,加载dll==>反射加载UserControl 上面步骤我已经重复讲了3遍了.prism的XapModuleTypeLoader类实现了这个接口. 定义ModuleDeployment配置文件 silverlight主程序默认会产生一个AppManifest的页面用于配置dll文件,但自定义的模块类库,没有这个文件.当读取xap以后,我们还需要定义一个配置文件来读取xap的dll文件.这里由于主程序并没有引用外部要加载的xap文件,所以是认不出来有什么dll的,定这个配置文件就是为读取dll而准备的. 在每个模块中,这个配置文件名字必须是叫ModuleManifest.xaml.这个名字是定死的,XapModuleTypeLoader类硬编码会读取这个文件.如下 <Modularity:ModuleDeployment xmlns="http:// |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |