本文是 《基于 Qt 的组件合成框架》的其中一节,建议全章阅读。
前面我们提到组件合成的各个语言平台实现时,说到了 C# 中的 MEF 框架,它提供了很好的架构思路,并且核心部分很简洁,所以我们选择将 MEF 框架移植到 Qt 中来。
Managed Extensibility Framework (MEF) 托管扩展框架或MEF是用于创建轻量级和可扩展应用程序的库。它使应用程序开发人员无需配置即可发现和使用扩展。它还使扩展开发人员可以轻松地封装代码并避免脆弱的硬依赖性。MEF不仅允许扩展在应用程序内重用,而且还可以跨应用程序重用。
模型概述
MEF的主要模型包括下列元素,我们在迁移中将基础常用的部分进行了对比实现,舍弃了不常用或者难以在C++中实现的部分。
- 导入导出基础(Import and Export Basics)
- 导入类型(Types of Imports)
避免被发现(Avoiding Discovery)- 扩展信息(Metadata and Metadata Views)
- 导入导出继承(Import and Export Inheritance)
自定义导出属性(Custom Export Attributes)- 创建策略(Creation Policies)
- 生命期及释放(Life Cycle and Disposing)
MEF的定义是基于 C# 语言的,映射到 Qt 上应该是这样的:
| 模型元素 | Qt 映射 | 备注 |
| 类型 Type | QObject 及派生类 由 QMetaObject 对象代表 |
在 MEF 中,可以是任意类型 |
| 导出(Exports) | 通过全局 QExport 对象声明 | 在 MEF 中,可作用于:类,字段,属性或方法 在 Qt 中,仅可作用于 QObject 类 |
| 导入(Imports) | 提供全局 QImport 对象声明 | 在 MEF 中,可作用于:字段,属性或参数构造 在 Qt 中,仅可作用于 QObject 类的属性 Q_PROPERTY |
| 扩展信息(Metadata) | 通过 QObject 类的 Q_CLASSINF |

本文介绍了如何将C#的MEF框架移植到Qt中,涉及导出、导入、扩展信息、导出继承等关键概念的Qt映射,以及利用元数据和QMetaObject实现组件管理和策略。
最低0.47元/天 解锁文章
5621

被折叠的 条评论
为什么被折叠?



