Prism合集(第七章 Module模型加载方法)

目录

一 开发社区

二 上一章回顾

三 加载Module

四 项目引用方式——调试

五 Directory配置模块目录DLL引用——发布

六  App.Config配置模块目录

七 XAML配置模块目录

八 总结

九 下章预告


一 开发社区

Developer Blog
Learn
Developer Platform


二 上一章回顾

一 开发社区

二 上一章回顾

三 模块(Module)含义

四 创建模块APP应用(Create Module APP)

五 总结

六 下章预告


三 加载Module

在Prism当中, 有多种方式可以加载我们的模块, 如下所示:
Module Catalog

  • (代码方式)Code
  • (配置文件)App.config
  • (磁盘目录)Disk/Directory
  • (XAML定义)XAML

(自定义)Custom
Register Catalog with PrismApplication
Register Modules with Catalog


四 项目引用方式——调试

项目右键→添加→项目引用,选中需要引用的ViewModule

添加需要模块的加载文件,并引入对应命名空间

加载时,可直接设置初始化模式为OnDemand懒加载模式

moduleCatalog.AddModule<ScheduleProfile>("Schedule", InitializationMode.WhenAvailable)→

moduleCatalog.AddModule<ScheduleProfile>("Schedule", InitializationMode.OnDemand);


五 Directory配置模块目录DLL引用——发布

通过读取根目录Modules文件夹查找模块

在主项目创建Modules文件夹,选中项目→右键属性→生成→输出→输出的基路径选择主项目\Modules,这样每个Module的DLL会直接生成在Modules/Debug文件夹,选择始终复制到输出目录

重写IModuleCatalog方法

此处的.指代主项目目录,路径为实现了Imodule接口的DLL所在路径

需要在继承Imodule接口的项目文件中,指定模块特性为懒加载

[Module(ModuleName = "Charge", OnDemand = true)]


六  App.Config配置模块目录


然后,为应用程序添加配置文件app.config, 添加以下内容:

<configuration>
  <configSections>
    <section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf" />
  </configSections>
  <startup>
  </startup>
  <modules>
    <module assemblyFile="ModuleA.dll" moduleType="ModuleA.ModuleAModule, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="ModuleAModule" startupLoaded="True" />
  </modules>
</configuration>


七 XAML配置模块目录

修改CreateModuleCatalog方法, 从指定XAML文件读取模块配置

创建模块名为ModuleCatalog.xaml文件, 添加模块信息


八 总结

以上就是Prism中加载Module模块的过程,本文仅仅简单介绍了Module加载过程,仅用来帮助学习理解,而在实际生产环境中我们可以根据需要将生成的模块加载到我们的Prism主程序中,如何在模块当中定义视图, 并且作为依赖项注入, 最终显示在应用程序指定的Region中。这将在我们下一章中详细展开。


九 下章预告

下一章我会教大家视图注入的方法


博主RaymondLeigh:如果您觉得本文为您提供了结局思路或解决了您的实际问题,麻烦您🙏帮忙点赞、收藏、评论、关注一键四连,您的举手之劳将为我写作提供动力源泉!🤞

print('Hello,RaymondLeigh!')  # 每日问候,跟大家问好!


🔥精品C#框架专栏:Prism合集 WPF合集


🌞精品前端MaterialDesign专栏:MaterialDesign专栏


💾精品后端SqlServer专栏:SqlServer专栏


 💻

`Prism` 是一个强大的 MVVM (Model-View-ViewModel) 框架,用于.NET平台上创建可测试、可维护的WPF或UWP应用程序。当你在使用 `Prism` 的 `CreateShell` 方法时遇到模块(Module)未能正确加载的问题,可能有几个原因: 1. **模块注册问题**:确保你在 `Bootstrapper.cs` 或其他适当的启动文件中正确地注册了模块。检查模块是否被添加到 `RegionManager` 中。 ```csharp protected override void ConfigureModuleCatalog(IModuleCatalog catalog) { catalog.AddModule<YourModuleName>(); } ``` 2. **依赖注入失败**:模块中的某个服务或类型可能没有正确注入。检查模块内部是否有依赖项,并确保它们被实现了或者配置为自动解决。 3. **生命周期管理**:`Module` 类可能没有正确实现 `IConstituentModule` 接口,特别是 `OnInitialized` 和 `OnUnloaded` 方法。这些方法会在模块初始化和卸载时执行,确保资源正确处理。 4. **命名空间冲突**:如果模块名和现有项目内的类名有冲突,可能会导致加载失败。确保模块类的名字在整个解决方案中唯一。 5. **模块路径问题**:如果模块是外部库的一部分,确保引用的库路径正确,或者模块类位于正确的目录下以便被框架找到。 6. **异常处理**:`CreateShell` 可能隐藏了一些错误。查看调用堆栈,看是否有任何未捕获的异常信息。 要解决这个问题,首先尝试查找日志(如果有的话),寻找任何错误消息。然后逐个排查上述问题,确保每个环节都符合`Prism`的最佳实践。如果你仍然无法解决问题,提供具体的错误信息或代码片段会有助于定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值