ELA PROFESSIONAL / 01

ElaMetaType 付费组件

一次定义,
让数据自由流转。

用声明式类型注册组织业务数据,以同一套接口完成 XML 与二进制序列化。覆盖嵌套容器、继承与多态,让配置保存、对象持久化和组件间交换共用一份数据模型。

CAPABILITIES

围绕你的业务,组织数据能力。

从字段声明到对象还原,围绕真实的数据结构构建。

声明式类型注册

注册自定义结构、QObject 派生类型、枚举及访问器字段;支持字段描述与声明、实现分离。

ELA_BEGIN_META · ELA_FIELDS

XML 与二进制

XML 适合检查配置;二进制适合数据存储与传输,并可按调用选择 LZ4 压缩。

serialize · serializeToByte

Qt 与 STL 容器

支持字符串、日期时间、几何等类型,以及顺序容器、集合、映射、元组的递归处理。

QString · QList · std::vector

继承与多态

注册继承字段,通过裸指针、标准或 Qt 共享指针保存并恢复已注册的实际派生类型。

std::shared_ptr · QSharedPointer

统一数据包装

ElaVariant 包装值与不同所有权形式的指针,为序列化、网络和录制提供共同数据载体。

ElaVariant

性能优势

在当前同等基准测试条件下,性能较 Protobuf 提升约 6%。

当前基准结果;实际表现随数据模型、数据规模与运行环境变化。

C++ / QT · CODE EXAMPLES

一份结构,两种数据表达。

同一份业务结构,同时用于 XML 与 LZ4 二进制序列化。

序列化与还原 · C++14
auto* metaType = ElaMetaType::getInstance();
ElaDeviceState state;

const QString xml = metaType->serialize(state);
const auto fromXml = metaType->deserialize<ElaDeviceState>(xml);

// true 开启 LZ4 压缩,读取时自动识别。
const QByteArray bytes = metaType->serializeToByte(state, true);
const auto fromBytes = metaType->deserializeFromByte<ElaDeviceState>(bytes);

API 用法片段,省略工程初始化与错误处理,仅展示核心功能。

WHERE IT FITS

把能力带入实际场景。

配置与工程文件

将层次化的配置结构写入可读 XML,统一保存与恢复入口。

业务对象持久化

把嵌套结构和容器转换为二进制数据,保留业务类型组织方式。

复杂实体模型

在已注册的继承体系中处理多态对象,与网络、录制组件共用类型模型。

INTEGRATION NOTES

接入之前,了解这些细节。

图像走二进制路径

QImage 与 QPixmap 使用 serializeToByte / deserializeFromByte,不应通过 XML 序列化。

多态需要注册类型

多态还原依赖类型注册与继承关系;通过指针传递对象,避免按值传递造成派生信息丢失。

按业务选择压缩

LZ4 可在二进制写入时启用,读取端自动识别。是否使用压缩,应结合数据大小与应用场景决定。

让组件服务于你的项目

进一步了解
ElaMetaType。

告诉我们你的数据结构、使用场景与部署环境,
咨询授权范围、报价及交付内容。

浏览其他 Ela 专业组件
Liniyous · Ela 开发者
QQ80985
微信liniyous

ElaMetaType 为付费项目;具体授权以沟通确认为准。