类型注册
本页介绍如何注册类型以进行序列化。
概述
Apache Fory™ 要求显式注册结构体类型。这种设计使得:
- 跨语言兼容性:注册的类型 ID 跨语言边界使用
- 类型安全:在反序列化时检测类型不匹配
- 多态序列化:通过智能指针启用多态对象的序列化
注册结构体
使用 register_struct<T>(type_id) 注册结构体类型:
#include "fory/serialization/fory.h"
using namespace fory::serialization;
struct Person {
std::string name;
int32_t age;
};
FORY_STRUCT(Person, name, age);
int main() {
auto fory = Fory::builder().xlang(true).build();
// 使用唯一的类型 ID 注册
fory.register_struct<Person>(100);
Person person{"Alice", 30};
auto bytes = fory.serialize(person).value();
auto decoded = fory.deserialize<Person>(bytes).value();
}