Prism 学习:从本地目录加载 Module

    在 Prism 中,将外部模块加载到主程序有以下几种方式:Code、XAML、配置文件、指定模块目录;其中,如果要使用 Code 方式来加载 Module,则需要将该 Module 引用到当前项目中;而后面两种通过 XAML与配置文件,在原理上大体一致;本文主要讨论第四种方法,即通过指定 Module 所在的目录来加载 Module。

    首先,我们需要在 Bootstrapper 类中重载 CreateModuleCatelog 方法,在该方法中定义一个 DirectoryModuleCatalog 对象,并为其指定 ModulePath,代码如下:

        protected override IModuleCatalog CreateModuleCatalog()
        {
            DirectoryModuleCatalog catelog = new DirectoryModuleCatalog();
            catelog.ModulePath = @".\Modules";
            return catelog;
        }

    接下来,我们要把被加载的 Module 所在的类库文件(.dll)复制该在 ModulePath 中指定的文件夹。

    提示:如果你的主项目与 Module 项目在同一个解决方案中,则可以配置 Module 项目的 Build Events,在 Post-build event command line 处填上以下命令:

copy $(TargetDir)$(TargetFileName) "$(SolutionDir)PrismModuleDemo\$(OutDir)Modules" /Y

    其中 PrismModuleDemo 应该是你的主项目文件夹名称。如下图:

    然后,当我们运行项目时,Prism 就会在指定的文件夹中找出所有的 Module 并将其添加到 ModuleCatelog 中,并完成加载。

按需加载

    在上述情况中,所有在该目录下的模块会在程序启动时,就会被加载。如果要实现按需加载(Loading Modules on Demand),则可以通过更改 Module 类的属性(Attribute)来实现: 

    [Module(ModuleName = "ModuleA", OnDemand = true)]
    public class ModuleA : IModule
    {
        public void Initialize()
        {
            // some logic
        }
    }

    通过指定 OnDemand = true,则可设定该模块为按需加载。当在程序中需要加载该模块时,可以通过 IModuleManager 的 LoadModule 方法可以将其加载进来:

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.ModuleManager.LoadModule("ModuleA");
        }

 

参考网址:

https://msdn.microsoft.com/en-us/library/gg405479(v=pandp.40).aspx

转载于:https://www.cnblogs.com/wpinfo/p/4571694.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Prism加载module时,应该使用正确的文件路径来确保系统能够找到指定的文件。 在使用Prism加载module时,有两个常见的路径问题可能导致系统找不到指定的文件。首先,确保指定的文件实际上存在于你指定的目录中。其次,检查程序运行时的当前工作目录是否与你期望的目录路径一致。 如果系统找不到指定的文件,可以先使用绝对路径来确保文件存在于你指定的目录中。可以通过使用绝对路径来指定文件的完整路径,例如"C:/Users/username/directory/module.dll"。这样,你就可以直接指定要加载的文件路径,而不依赖于系统的当前工作目录。 另外,还可以使用相对路径来指定文件的位置。相对路径是相对于当前工作目录的路径。可以使用 ".." 表示上一级目录,以此类推,直到达到目标文件所在的目录。确保当前工作目录正确设置,以便系统能够找到相对路径下的文件。 此外,还需要检查所使用的目录路径是否正确。可能会出现多种原因导致加载module失败,如文件名拼写错误、文件路径不正确、目录不存在等等。检查目录的正确性和文件的存在性对于成功加载module非常重要。 总之,在使用Prism加载module时,确保指定的文件路径正确、文件存在于指定目录中,并且程序的当前工作目录正确设置,这样可以避免系统找不到指定的文件的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值