1.1 组件合成与 Qt 元数据

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

        本文是 《基于 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值