Prism 小问题总结

 

1、找不到方法:“Prism.Modularity.IModuleCatalog Prism.Bootstrapper.CreateModuleCatalog()”。
   解决办法 1、更换prism版本到6.3版本
            2、app.config修改对应版本

 

 2、this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(testModule).Assembly)); //testModule就是另一个项目中的类,该类用于加载相应的view,这样就把两个项目里面不同的模块连在了一起

在同一项目里面报错

System.ComponentModel.Composition.CompositionException
  HResult=0x80131500
  Source=System.ComponentModel.Composition

 

3、业务模块采用目录catlog加载方式,即后续业务模块开发完成,将DLL扔到目录下即可

4、Unity(Unity Application Block)和MEF(Managed Extensibility Framework)两种框架下的容器

5、创建并配置模块目录

        protected override IModuleCatalog CreateModuleCatalog()
        {
            return new ConfigurationModuleCatalog();
        }

        protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();
           this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Mystrapper).Assembly));
           this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(TestModule).Assembly));
        }

MEF提供了DirectoryCatalog来检测一个目录中是否包含有模块的程序集(或者其它MEF可以导入的类型)。在这种情况下,你需要重写ConfigureAggregateCatalog方法注册一个目录。该方法仅在WPF下有效。

模块列表被一个继承于IModuleCatagory的类所实现。模块列表在应用程序创建时被应用程序的启动器创建。Prism提供了模块列表的多种实现以供选择。也可以通过AddModule方法或者创建一个承继于ModuleCatagory的类后添加自己行为的方式从其它数据源移植模块列表。

### Prism 框架的概述 Prism 是一个用于构建灵活、可维护的 Windows Presentation Foundation (WPF) 和 Xamarin 应用程序的框架[^2]。它提供了许多功能,帮助开发者遵循松耦合的设计原则,从而更容易扩展和维护应用程序。Prism 的核心组件包括模块化支持、事件聚合器(Event Aggregator)、依赖注入容器集成以及视图模型(ViewModel)的支持。 #### 核心功能 1. **模块化** Prism 提供了模块化的支持,允许将应用程序拆分为独立的模块。每个模块可以单独开发、测试和部署,从而提高了代码的可维护性和可扩展性[^2]。 2. **事件聚合器(Event Aggregator)** 事件聚合器是 Prism 中的一个关键组件,用于在不同模块之间进行解耦通信。它允许各个模块通过发布和订阅事件的方式进行交互,而无需直接引用彼此的代码[^1]。 3. **依赖注入(Dependency Injection)** Prism 支持多种依赖注入容器,例如 Unity、Autofac 和 Microsoft.Extensions.DependencyInjection。通过依赖注入,可以轻松管理对象的生命周期并实现松耦合设计[^2]。 4. **视图模型(ViewModel)支持** Prism 提供了对 MVVM(Model-View-ViewModel)模式的全面支持,包括绑定命令(Commands)、数据上下文管理以及导航服务。这些功能使得开发者可以专注于业务逻辑,而不必担心 UI 的复杂性。 5. **导航服务** Prism 提供了一个强大的导航框架,允许在不同的视图之间进行平滑切换。导航服务支持传递参数、返回结果以及处理导航历史记录。 #### 示例代码:使用事件聚合器 以下是一个简单的示例,展示如何在 Prism 中使用事件聚合器进行模块间通信: ```csharp // 定义事件 public class MessageSentEvent : PubSubEvent<string> { } // 发布事件 eventAggregator.GetEvent<MessageSentEvent>().Publish("Hello from Module A!"); // 订阅事件 eventAggregator.GetEvent<MessageSentEvent>().Subscribe(message => { Console.WriteLine($"Received message: {message}"); }); ``` ### 总结 Prism 是一个功能强大且灵活的框架,适用于需要高度模块化和可扩展性的 WPF 和 Xamarin 应用程序开发。通过提供模块化支持、事件聚合器、依赖注入以及 MVVM 相关工具,Prism 能够显著简化复杂应用程序的开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值