news 2026/7/15 13:07:00

MefBootstrapper在Prism引导程序中的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MefBootstrapper在Prism引导程序中的使用

前言

MefBootstrapper 是 Prism 框架中专门为 MEF(Managed Extensibility Framework) 设计的启动器基类,它的核心作用是协调应用程序的初始化过程,并集成 MEF 作为依赖注入容器。

1、创建Bootstrapper引导程序类

CreateShell方法用于从容器中获取主窗口;InitializeShell中用于设置主窗体以及显示主窗体,注意这里要引用Prism.Mef.Wpf.dll。

classBootStrapper:MefBootstrapper{privatereadonlystringApplicationPath=Environment.CurrentDirectory+"\\lib\\";protectedoverrideDependencyObjectCreateShell(){returnthis.Container.GetExportedValue<MyShell>();}protectedoverridevoidInitializeShell(){base.InitializeShell();Application.Current.MainWindow=(Window)Shell;Application.Current.MainWindow.Show();}protectedoverridevoidConfigureAggregateCatalog(){base.ConfigureAggregateCatalog();this.AggregateCatalog.Catalogs.Add(newAssemblyCatalog(typeof(BootStrapper).Assembly));DirectoryCatalogcatalog=newDirectoryCatalog(ApplicationPath);this.AggregateCatalog.Catalogs.Add(catalog);}protectedoverridevoidConfigureModuleCatalog(){base.ConfigureModuleCatalog();}}
启动流程 Application.Startup()↓ BootStrapper 实例化 ↓CreateLogger()-创建日志 ↓ ConfigureModuleCatalog-配置模块目录 ↓ ConfigureAggregateCatalog-配置组件目录 ↓CreateShell()-创建主窗口 ↓InitializeShell()-初始化主窗口 ↓InitializeModules()-初始化所有模块 ↓ 应用程序就绪

2、使用引导程序

1)删除 StartupUri


2)重写OnStartup方法
在App.xaml.cs类中重写OnStartup方法,实例化BootStrapper类,并调用Run方法

publicpartialclassApp:Application{protectedoverridevoidOnStartup(StartupEventArgse){base.OnStartup(e);BootStrapperbootStrapper=newBootStrapper();bootStrapper.Run();}}

3、导出主窗体MyShell类

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 13:04:59

Treynor比率详解:用Beta衡量系统性风险补偿

1. 项目概述&#xff1a;为什么一个“老掉牙”的比率&#xff0c;至今仍是专业基金经理案头常备工具&#xff1f; 你有没有遇到过这种情况&#xff1a;手头两只基金&#xff0c;过去一年收益率都是12%&#xff0c;但一只波动剧烈&#xff0c;单日涨跌动辄5%&#xff1b;另一只走…

作者头像 李华
网站建设 2026/7/15 13:04:03

Adobe Illustrator脚本插件终极指南:Scriptographer实现设计自动化

Adobe Illustrator脚本插件终极指南&#xff1a;Scriptographer实现设计自动化 【免费下载链接】scriptographer Open-Source Scripting Plugin for Adobe Illustrator 项目地址: https://gitcode.com/gh_mirrors/sc/scriptographer Scriptographer是一款强大的开源Adob…

作者头像 李华
网站建设 2026/7/15 13:02:57

BlockBlock部署最佳实践:企业环境中的规模化部署与管理

BlockBlock部署最佳实践&#xff1a;企业环境中的规模化部署与管理 【免费下载链接】BlockBlock BlockBlock provides continual protection by monitoring persistence locations. 项目地址: https://gitcode.com/gh_mirrors/bl/BlockBlock BlockBlock是一款专业的macO…

作者头像 李华
网站建设 2026/7/15 13:02:24

5大秘籍带你玩转Ryujinx模拟器:从零开始轻松搞定Switch游戏体验

5大秘籍带你玩转Ryujinx模拟器&#xff1a;从零开始轻松搞定Switch游戏体验 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想要在电脑上畅玩Switch游戏吗&#xff1f;Ryujinx模拟器是…

作者头像 李华
网站建设 2026/7/15 13:01:31

Linux运维向云原生进阶:Docker与K8s实战指南

如果你是一名Linux运维工程师&#xff0c;最近是否经常听到这样的声音&#xff1a;"现在只会传统运维已经不够用了&#xff0c;必须掌握云原生技术"&#xff1f;或者在实际工作中发现&#xff0c;越来越多的企业开始要求运维人员具备Docker和K8s技能&#xff1f; 这…

作者头像 李华