快速业务通道

prism v2之旅(7)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19
篇要讲的重点.

我们先来看一下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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

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号